SQL Server 2008添加Check約束條件


方法一:在設計表時,右鍵該字段->CHECK約束->添加約束:

表達式寫法如下:

1.[字段名] > number1 AND [字段名] < number2

2.[字段名] > number1 OR [字段名] < number2

3.[字段名] = ‘M’ AND [字段名] = 'F'

 

方法二:為現有的表寫SQL腳本:
ALTER TABLE 表名

WITH NOCHECK ADD CONSTRAINT CK_約束名

CHECK (字段名 > num1 and 字段名 < num2);

 

補充:可以寫成這種                     

ALTER TABLE 表名

WITH NOCHECK ADD CONSTRAINT CK_約束名         

CHECK (字段名 in ('值1','值2','值3'));


方法三:用SQL腳本創建帶有約束的表,這里參考了博文http://blog.csdn.net/fredrickhu/article/details/5025170

創建帶有約束的表分為兩種情況:

1,字段約束級別。檢查約束的邏輯表達式中只能使用這個字段名稱,這個檢查約束只與該字段相關。當表創建之后,這個CHECK約束也將被創建,並被賦予一個系統生成的約束名稱。

CREATE TABLE dbo.Payroll

(

ID int PRIMARY KEY,

PositionID INT,

SalaryType nvarchar(10),

Salary decimal(9,2) CHECK (Salary < 150000.00)

);

在CREATE TABLE操作期間命名你的檢查約束:

CREATE TABLE dbo.Payroll

(

ID int PRIMARY KEY,

PositionID INT,

SalaryType nvarchar(10),

Salary decimal(9,2) CONSTRAINT CK_Payroll_Salary CHECK (Salary < 150000.00)

);

2.表級別的檢查約束。它關聯到這個表,在這個檢查約束中可以約束表中的任何字段。

CREATE TABLE dbo.Payroll

(

ID int PRIMARY KEY,

PositionID INT,

Salary decimal(9,2),

SalaryType nvarchar(10),  //注意這里是有一個逗號

CHECK (Salary > 10.00 and Salary < 150000.00)  //表級別的約束

);

在SQL腳本上為其添加多個約束條件:

ALTER TABLE dbo.Payroll

WITH NOCHECK ADD CONSTRAINT CK_Payroll_SalaryType

CHECK (SalaryType in ('Hourly','Monthly','Annual')),

CONSTRAINT CK_Payroll_Salary

 

附注:

創建多個字段約束

ALTER TABLE dbo.Payroll WITH NOCHECK

ADD CONSTRAINT CK_Payroll_Salary_N_SalaryType

CHECK (SalaryType in ('Hourly','Monthly','Annual')

and Salary > 10.00 and Salary < 150000.00);

CHECK (Salary > 10.00 and Salary < 150000.00);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM