2014-02-10 57 views
0

我有,我想实现下面的表格:SQL Server:触发器,约束或函数?

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

为了确保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;