[英]Limit column value to 0 or to be unique on insert
我有一个表,其中int列应设置为零或表中尚不存在的值。 我可以使用CHECK CONSTRAINT阻止在此类列中插入非零重复值,还是应该使用BEFORE INSERT触发器? 如果我能用两者做到这一点,那么哪种设计更好?
从.NET Windows窗体应用程序我们使用全局事务范围来包装保存,在这两种情况下我都希望插入失败并且事务完全回滚,所以我不知道是否应该将回滚放入触发器,这就是为什么我宁愿尝试检查,如果可能的话。
数据库:SQL 2008
谢谢。
请参阅Andriy M评论中的链接,它提到了2008年的新概念:过滤指数...
CREATE UNIQUE INDEX indexName ON tableName(columns) INCLUDE includeColumns WHERE columnName != 0
这将创建不为0的唯一项的索引。
任何插入重复的非零值的尝试都将破坏索引的唯一性并导致错误。
为什么你使用零而不是null。 如果你把它作为null,那么db会通过一个可以为空的唯一约束轻松地为你处理它。
检查约束,如果使用得当,可以防止错误数据。 他们不会将坏数据改为好。 出于这个原因,我会以触发器为目标。 如果你可以满足0为NULL的需求,你可以使用一个唯一约束,但无论如何,提供答案都是触发器的工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.