对于Sql Server,我几乎是一个新手,我对如何约束表中的数据有疑问。
我有两个字段,都是位字段。必须将任何一个或两个都设置为true,但两者都不能设置为false。
这是一个约束还是触发器的工作?
提前致谢。
答案 0 :(得分:5)
使用检查约束
CREATE TABLE T
(
B1 BIT NOT NULL,
B2 BIT NOT NULL,
CHECK (B1 = 1 OR B2 =1)
)
这些比触发器重量轻。
使用触发器需要构建INSERTED
中的DELETED
和tempdb
伪表以及针对此的查询。
检查约束也会提前触发,并且(如果发生故障)更新/插入会减少需要回滚的不必要的工作。
答案 1 :(得分:0)
您应该使用约束,触发器(大部分)用于执行操作,而不是纯验证任务。