1. 程式人生 > 其它 >sql sever 約束

sql sever 約束

SQLServer中有五種約束,Primary Key約束、Foreign Key約束、Unique約束、Default約束和Check約束

1、Primary Key約束
在表中常有一列或多列的組合,其值能唯一標識表中的每一行。
這樣的一列或多列成為表的主鍵(PrimaryKey)。一個表只能有一個主鍵,而且主鍵約束中的列不能為空值。只有主鍵列才能被作為其他表的外來鍵所建立。

--刪除主鍵
 alter table 表名 drop constraint 主鍵名
 --新增主鍵
 alter table 表名 add constraint 主鍵名 primary key(欄位名1,欄位名2……)

2、Foreign Key約束
外來鍵約束是用來加強兩個表(主表和從表)的一列或多列資料之間的連線的。建立外來鍵約束的順序是先定義主表的主鍵,然後定義從表的外來鍵。也就是說只有主表的主鍵才能被從表用來作為外來鍵使用,被約束的從表中的列可以不是主鍵,主表限制了從表更新和插入的操作。

alter table  外來鍵表名  add constraint 約束名稱 foreign key(外來鍵欄位)  references 主鍵表名(約束列名)

3、Unique約束
唯一約束確保表中的一列資料沒有相同的值。與主鍵約束類似,唯一約束也強制唯一性,但唯一約束用於非主鍵的一列或者多列的組合,且一個表可以定義多個唯一約束。

create unique index u_index on table(id,name,sex)
 
ALTER TABLE [dbo].[T_Question] ADD UNIQUE NONCLUSTERED 
(
[IdentityFlag],[FK_CatalogID] ASC
)

4、Default約束
若在表中定義了預設值約束,使用者在插入新的資料行時,如果該行沒有指定資料,那麼系統將預設值賦給該列,如果我們不設定預設值,系統預設為NULL。

--給指定列新增預設約束
alter table 表名 add constraint 約束名 default(約束值) for 列名;

5、Check約束
Check約束通過邏輯表示式來判斷資料的有效性,用來限制輸入一列或多列的值的範圍。在列中更新資料時,所要輸入的內容必須滿足Check約束的條件,否則將無法正確輸入。
語法

ALTER TABLE table_name
ADD CONSTRAINT constraint_name CHECK (column_name condition) [DISABLE];

6、 刪除約束:

   --判斷預設約束是否存在,如果存在則先刪除,如果不存在則直接新增
if exists(select * from sysobjects where name=約束名)
alter table 表名 drop constraint 約束名;