我有一张桌子,我需要确保它startDate
不迟于endDate
.
可以更新任一日期,因此无论是否输入/修改startDate
或endDate
(或两者)都必须应用规则。
使用触发器、存储过程或其他东西更好吗?任何示例语法表示赞赏。
我有一张桌子,我需要确保它startDate
不迟于endDate
.
可以更新任一日期,因此无论是否输入/修改startDate
或endDate
(或两者)都必须应用规则。
使用触发器、存储过程或其他东西更好吗?任何示例语法表示赞赏。
使用检查约束。比触发器简单得多。
CREATE TABLE dbo.foo
(
StartDate DATE NOT NULL,
EndDate DATE NOT NULL,
CONSTRAINT CheckEndLaterThanStart CHECK (EndDate >= StartDate)
);
如果表已经存在:
ALTER TABLE dbo.foo
ADD CONSTRAINT CheckEndLaterThanStart
CHECK (EndDate >= StartDate);
如果您尝试插入晚于结束日期的开始日期,您将获得:
消息 547,级别 16,状态 0,第 1 行
INSERT 语句与 CHECK 约束“CheckEndLaterThanStart”冲突。冲突发生在数据库“AdventureWorks2012”、表“dbo.foo”中。
该语句已终止。