2014-02-10 58 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;