我有一张表格,我需要确保startDate
不迟于endDate
。
任何日期都可以更新,因此无论输入/修改startDate
或endDate
(或两者),都必须应用规则。
使用触发器,存储过程还是其他什么更好?感谢任何示例语法。
答案 0 :(得分:5)
使用检查约束。比触发器简单得多。
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);
如果您尝试在结束日期之后插入开始日期,您将获得:
Msg 547,Level 16,State 0,Line 1
INSERT语句与CHECK约束“CheckEndLaterThanStart”冲突。冲突发生在数据库“AdventureWorks2012”,表“dbo.foo”中 声明已经终止。