2015-08-31 34 views
1
create table EmployeeStatistics 
( 
    EmployeeIdNo int, 
    Name varchar(30), 
    Salary integer, 
    Benefits integer, 
    Position varchar(25), 
    Allowance integer, 
    DateOfBirth integer, 
    Telephone integer,  
    primary key (EmployeeIdNo) 
); 

我想要Position只接受大寫字母。要添加哪個約束?在SQL Server中添加僅限大寫字母的約束

alter table EmployeeStatistics 
#add constraint 

回答

1

事實上,而不是添加約束,只接受大寫,我要尋找到一個簡單的觸發爲大寫。

當數據庫的用戶輸入小寫字母時,可以很容易地修復而不會丟失信息,這對於煩擾數據庫用戶來說毫無意義。有些人不喜歡對數據進行無聲的更改,但是我一直認爲,如果行爲得到廣泛宣傳,最好生成不必要的錯誤。

這將是這樣的:

CREATE TRIGGER UpperPosition ON EmployeeStatistics 
FOR INSERT, UPDATE AS 
    UPDATE T SET T.Position=Upper(T.Position) 
    FROM EmployeeStatistics T 
    INNER JOIN inserted I ON (T.ID = I.ID) 

創建觸發器,一時間:

UPDATE EmployeeStatistics 
SET Position = Upper(Position) 

改變當前的所有行。

只要注意如果你有任何外鍵約束使用該列,使他們大寫可能會打破約束。

+0

將其強制爲大寫的代碼?請 – Farhaan

2

您可以使用檢查約束,您可以使用二進制排序規則或區分大小寫排序規則比較值與upper case值。

alter table dbo.EmployeeStatistics 
    add constraint CK_EmployeeStatistics_Position 
    check (upper(Position) = Position collate Latin1_General_BIN2)