SQL Server:触发器,约束或函数?

时间:2014-02-10 19:22:18

标签: sql-server function triggers

我有一个表格,我想实现以下内容:

TableA (col1 int,col2 (varchar(10),col3 int default 99)

col3只能按1升序排列。

1 A 1
2 A 2
3 A 3
4 A 99
5 A 4

对于相同的col2col3的两个值不能相同。但对于不同的col2

,它们可以相同
1 A 1
2 A 2
3 A 3
4 A 99
5 A 4
6 B 1
6 B 2 
6 b 99

那么,在这种情况下,我应该使用触发器还是函数,或者这也可以通过约束来实现?请注意,对于col399是默认值,其他值会手动更新。

请帮忙!

谢谢

1 个答案:

答案 0 :(得分:0)

确保col3值大于1

ALTER TABLE TableA
ADD CONSTRAINT gt1 CHECK (col3 >= 1)

如果可以为同一99设置一次默认值col2,只需使用唯一约束

CREATE UNIQUE INDEX name
ON TableA(col2, clo3)

如果可以多次设置默认值,请使用筛选的索引(SQL Server 2008 +)

CREATE UNIQUE INDEX name
ON TableA(col2, clo3)
WHERE col3 <> 99;