1 sql sql-server triggers stored-procedures sql-server-2008
我有一张桌子,我需要确保startDate不迟于endDate.
无论日期可以更新,所以规则都不管申请是否startDate或者endDate(或两者)被输入/修改.
使用触发器,存储过程还是其他什么更好?任何样本语法都表示赞赏.
使用检查约束.比触发器简单得多.
CREATE TABLE dbo.foo
(
StartDate DATE NOT NULL,
EndDate DATE NOT NULL,
CONSTRAINT CheckEndLaterThanStart CHECK (EndDate >= StartDate)
);
Run Code Online (Sandbox Code Playgroud)
如果表已存在:
ALTER TABLE dbo.foo
ADD CONSTRAINT CheckEndLaterThanStart
CHECK (EndDate >= StartDate);
Run Code Online (Sandbox Code Playgroud)
如果您尝试在结束日期之后插入开始日期,您将获得:
消息547,级别16,状态0,行1
INSERT语句与CHECK约束"CheckEndLaterThanStart"冲突.冲突发生在数据库"AdventureWorks2012",表"dbo.foo"中.
该语句已终止.