我有一个表格,我想实现以下内容:
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
对于相同的col2
,col3
的两个值不能相同。但对于不同的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
那么,在这种情况下,我应该使用触发器还是函数,或者这也可以通过约束来实现?请注意,对于col3
,99
是默认值,其他值会手动更新。
请帮忙!
谢谢
答案 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;