SQL Server 2008 中唯一的日期范围字段

2023-11-25

我有一个表,其中包含两个名为 StartTime 和 EndTime 的字段。两者都是 TIME 字段。

我想添加一个约束,防止插入与预先存在的时间范围重叠的任何记录。例如。如果已存在 StartTime = 5:00、EndTime = 10:00 的记录,我希望 StartTime = 6:00、EndTime = 9:00 的插入由于重叠而失败。

有没有什么办法可以做到这一点,无论有没有触发器?


下面的触发器应该可以工作 - 也可以通过检查约束来做到这一点,但是显示的逻辑这个帖子有点伤我的头。

CREATE TRIGGER [dbo].[DateRangeTrigger]
   ON  [dbo].[TargetTable]
   FOR INSERT, UPDATE
AS 
BEGIN

IF EXISTS (SELECT t.starttime, t.endtime FROM TargetTable t
        Join inserted i
        On (i.starttime > t.starttime AND i.starttime < t.endtime AND i.UniqueId <> t.UniqueId) 
           OR (i.endtime < t.endtime AND i.endtime > t.starttime AND i.UniqueId <> t.UniqueId)
           OR (i.starttime < t.starttime AND i.endtime > t.endtime AND i.UniqueId <> t.UniqueId)
        )
BEGIN
    RAISERROR ('Inserted date was within invalid range', 16, 1)
    IF (@@TRANCOUNT>0)
        ROLLBACK
END


END
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server 2008 中唯一的日期范围字段 的相关文章

  • LINQ to SQL:从位于不同服务器上的两个数据库获取记录

    我需要从两个不同的表中获取记录 数据库位于两个不同的 SQL Server 中 例如 销售数据库位于服务器 1 上 采购数据库位于服务器 2 上 销售和采购数据库都有一些表集 例如销售数据库中的 table1 和采购数据库中的 table2
  • 如何手动设置auto_increment的下一个值?

    我手动向表中添加了一些行 并且还手动设置了 ID 自动增量 现在 当我尝试通过我的应用程序将新行添加到数据库表中时 我收到错误 创建的 ID 值已存在 如何手动设置下一个ID值 例如 在表中我必须有ID 那么如何告诉PostgreSQL 下
  • 查询链接服务器时登录失败

    我正在尝试在 SQL Server 中创建链接服务器 Create the link to server uranium EXEC master dbo sp addlinkedserver server N uranium srvprod
  • MSSQL:如何使用代码编写存储过程创建脚本?

    我正在尝试使用一个数据库中存在但另一个数据库中不存在的 information schema routines 查询存储过程定义列表 SELECT t1 Routine Definition FROM server1 MyDatabase
  • 如何比较 Postgresql 中日期时间字段中的日期?

    在比较 postgresql Windows 中的版本 9 2 4 中的日期时 我遇到了一个奇怪的情况 我的表中有一列说update date与类型timestamp without timezone 客户可以仅使用日期搜索此字段 例如 2
  • xQuery LIKE 运算符?

    有没有办法以与 SQL 相同的方式使用 XQuery 执行 LIKE 操作 我不想构造一些 startswith endswith 和 contains 表达式 我想要实现的目标的示例 for x in user where x first
  • TSQL - 执行CLR权限

    我从 CLR net Assembly 获得了一个 sql 过程 该过程在执行时返回错误 Msg 6522 Level 16 State 1 Procedure sp HelloWorld Line 0 A NET Framework er
  • 删除前导零

    给定列中的数据 如下所示 00001 00 00026 00 我需要使用 SQL 删除空格后面的所有内容以及值中的所有前导零 以便最终输出为 1 26 我怎样才能最好地做到这一点 顺便说一句 我正在使用 DB2 这已在 DB2 for Li
  • SQL Like 带有子查询

    我怎样才能做到这一点 SELECT FROM item WHERE item name LIKE SELECT equipment type FROM equipment type GROUP BY equipment type 内部子查询
  • 在 nhibernate 标准中使用内置的 sql“转换”函数

    我想利用 SQL Server 2008 中的 Convert 函数 以便可以在 DateTime 列上进行搜索 建议的 SQL 看起来像这样 SELECT list of fields FROM aTable WHERE CONVERT
  • If Else 条件的 SQLite 语法

    我正在使用 SQLite 数据库 我的表有一个名为 密码 的文本列 早些时候 为了检索我用来执行简单操作的值select from myTable询问 但现在的要求是 如果Password值不是NULL那么我需要将其显示为 是 或 否 它是
  • 如何将此本机 SQL 查询转换为 HQL

    所以我有这个很长的复杂的 Native SQLQuery string hql SELECT FROM SELECT a rownum r FROM select f2 filmid f2 realisateurid f2 titre f2
  • 如何限制两个表之间一对多关系中的多个数量?

    我有一个带有两个 MySql 表的 MySQL 数据库 第一个是第一个表 表 A 有一列具有唯一值 从值 从 1 到 n 在第二个表 2 表 B 中 我有两列 在第一个表中我有一个名称 在第二个我的值从 1 到 n 如果我在 中添加一个值
  • jDBI中如何进行内查询?

    我怎样才能在 jDBI 中执行这样的事情 SqlQuery select id from foo where name in
  • sql脚本变量默认值

    我有一个脚本文件 例如测试 sql 我想从另一个脚本调用它 比如 caller sql 在 sqlcmd 模式下使用 r test sql 这工作正常 但我想在 test sql 中使用脚本变量 当我从 caller sql 调用 test
  • 从 $i 获取值,顺序被打乱

    for i 0 i lt count name i some output ommited td td
  • ActiveRecord 查询,按关联排序,最后一个 has_many

    我试图列出所有Users by the created at最近创建的关联记录 通讯 列 到目前为止我所拥有的 User includes communications order communications created at IS
  • SQL Server 标识列值从 0 而不是 1 开始

    我遇到了一个奇怪的情况 数据库中的某些表的 ID 从 0 开始 即使 TABLE CREATE 的 IDENTITY 1 1 也是如此 对于某些表来说是这样 但对于其他表则不然 它一直有效到今天 我尝试过重置身份列 DBCC CHECKID
  • 如何在SQL Compact Edition中导入数据? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我似乎没有找到合适的工具 也没有找到
  • SQL Server查询麻烦,多对多关系

    不知道如何用一行字来表达这个问题 对标题表示歉意 我的数据库中有3个表 例如 Shop Item 商店库存 Shop 和 Item 具有多对多关系 因此 ShopStock 表将它们链接起来 ShopStock 中的字段是 ID ShopI

随机推荐

  • 从 Windows 脚本发送邮件

    我想通过 Windows Server 2003 标准版上的脚本发送邮件 我认为服务器设置几乎是开箱即用的 邮件服务器是 Exchange 邮件服务器 当您位于内部网络时 您可以使用普通的旧式 SMTP 我已经在我的机器上使用 Perl 完
  • iPhone核心数据模拟器

    我创建了一个使用核心数据的应用程序 有没有办法在模拟器上查看sqlite db 也许有一个工具可以允许在模拟器上查询 sqlite 数据库 就像数据浏览器一样 有没有办法浏览 iPhone 模拟器到 sqlite 数据库位置 对于 Xcod
  • 无法读取未定义的属性“debugHosts”

    我在尝试将 Realm 与 RN 0 29 一起使用时收到此错误 来自 Chrome 的堆栈跟踪 Cannot read property debugHosts of undefined handleException Exceptions
  • 如何在 Grails 1.3.7 中记录 sql

    我尝试在数据源 测试环境 中使用 logSql true 配置 grails 中的 sql 日志 但测试输出中没有显示任何内容 我读了这篇文章 但它不起作用 如何在 Grails 中记录 SQL 语句 Thanks 我们在 Config g
  • 如何在 PostgresQL 中显示所有无效对象

    寻找视图我可以列出 PostgreSQL 中所有 无效 对象 在 Oracle 中 我们可以使用 dab objects status 列 但我不确定在 PostgreSQL 中是否有一种简单的方法可以做到这一点 也许 我可以用下面的代码检
  • 使用 python 将图像复制到 MacOS 剪贴板

    我想在 Mac OS 上将图像 PIL 图像 复制到剪贴板 我尝试了几十种不同的方法来做到这一点 大多数 python 剪贴板模块 如 pyclip 或 Clipboard 不支持图像 我找到了一个在 Windows 上执行此操作的代码 但
  • 无法解释的 C++ 默认 int 值

    我一直在重构一些代码 我注意到一些涉及未初始化 int 数组的奇怪行为 int arr ARRAY SIZE 我设置了一个断点 似乎所有值都默认为 858993460 这个值有什么特别的吗 有什么想法为什么它们不默认为 0 吗 858993
  • 根据序列中缺失的数字拆分列表

    我正在寻找最Pythonic的方法 根据序列中缺少的数字将数字列表拆分为更小的列表 例如 如果初始列表是 seq1 1 2 3 4 6 7 8 9 10 该函数将产生 1 2 3 4 6 7 8 9 10 or seq2 1 2 4 5 6
  • 如何在 UWP c# 中使用 DataTable 内容填充 DataGrid

    我正在创建一个 UWP 应用程序 并尝试使用包含数据库中数据的 DataTable 填充我的 DataGrid 但没有成功 我已经寻找解决方案 但无法摆脱该错误 XAML 代码
  • 如果 Visual Studio 2010 中属性窗口的描述框被隐藏,如何显示它?

    如果 Visual Studio 2010 中属性窗口的描述框被隐藏 如何显示它 例如 下图显示了描述框 它显示为 加载 每当用户加载表单时发生 我遇到了同样的问题 这是由于描述框长度被拖为零引起的 为了解决这个问题 我必须取消固定属性框并
  • 如何检查是否在 Cygwin、Mac 还是 Linux 中运行?

    我有一个可在 Windows Cygwin 以及 Mac 和 Linux 上使用的 shell 脚本 每个版本需要稍微不同的变量 shell bash 脚本如何检测它是在 Cygwin Mac 还是 Linux 中运行 通常 uname及其
  • 在 Intellij Idea 中找不到符号“var”

    每当我尝试从 Intellij Idea 运行我的应用程序时 我都会收到以下错误 如果我通过 Maven 构建应用程序 它就可以正常工作 看一下我的模块设置 JDK 是 v10 项目和模块的语言也是 v10 知道为什么会发生这种情况吗 我不
  • 如何有效地从字节中读取位?

    我正在开发一个包含 WebSockets 的项目 服务器 Node js 和客户端 Chrome 之间的数据是使用我设置的用于数据交换的自定义 非常简单 格式发送的 我以 3 位为单位发送数据 因为我发送的项目都有 8 种可能性 数据格式如
  • Hibernate - 批量更新从更新返回意外行数:0 实际行数:0 预期:1

    我收到以下休眠错误 我能够识别导致问题的功能 不幸的是 该函数中有多个数据库调用 由于休眠在事务结束时刷新会话 我无法找到导致问题的行 下面提到的休眠错误看起来像是一般错误 它甚至没有提到哪个 Bean 导致了这个问题 有人熟悉这个休眠错误
  • BarSpacing 选项在 Mathematica 中是如何实现的?

    我正在尝试实现一个DateListBarChart函数 获取日期数据并输出与以下位置相同的条形图DateListPlot 如果给定相同的数据 则它们必须在相同的水平位置绘制数据 这样就可以使用组合它们Show 我发现很难获取设置BarSpa
  • 修改twitter bootstrap导航栏

    我一直在尝试修改 Twitter 引导导航栏 目前所有链接都向左对齐 而我真正想要的是让它们居中 在另一篇文章中我读到你使用这个 tabs pills margin 0 auto padding 0 width 100px 但这对我不起作用
  • IRb:如何使用预加载的类启动交互式 ruby​​ 会话

    当我经历采用 Ruby 语言的旅程时 我花了很多时间在 IRb 上 太棒了 但是 由于我不太了解它的功能 并且对 Ruby 仍然是个 傻瓜 所以我想了解以下内容 如何在不重新启动 IRb 的情况下 刷新 会话 或者这是不可能的 如何配置 I
  • 在 C/C++ 源代码中包含 Git 提交哈希和/或分支名称

    我想知道如何将 Git 提交哈希和 或其他信息获取到已编译二进制文件中 C 变量的内容中 而不使其成为 Git 跟踪的源代码的一部分 我需要跟踪在嵌入式处理器上运行的已编译可执行文件中的固件版本信息 在这种封闭环境 即没有文件系统 中 无法
  • 添加登录名并使用 SQL Server 身份验证连接到 SQL

    我想在 SQL Server 2008 中添加一个用户 这样我就可以使用 SQL Server 身份验证而不是 Windows 身份验证来连接到 SQL 并尝试使用以下代码创建一个具有登录名的用户 CREATE login newLog w
  • SQL Server 2008 中唯一的日期范围字段

    我有一个表 其中包含两个名为 StartTime 和 EndTime 的字段 两者都是 TIME 字段 我想添加一个约束 防止插入与预先存在的时间范围重叠的任何记录 例如 如果已存在 StartTime 5 00 EndTime 10 00