1. 程式人生 > >T-SQL語句新增約束

T-SQL語句新增約束

語法: ALTER TABLE 表名 ADD CONSTRAINT約束名約束型別 具體的約束宣告

約束名的取名規則推薦採用:約束型別_約束列,當然你也可以不這麼命名,這樣單純是比較方便

如:主鍵(Primary Key)約束:PK_UserId

        唯一(Unique key)約束: UQ_UserCardId

        預設(Default Key)約束 DF_UserPasswd

        檢查(Check Key)約束 CK_Gender

        外來鍵(Foreign Key)約束: FK_SortId

       --以上加棕色段是我定義表中的列名稱

打個比方:add constraint PK_UserId PRIMARY KEY (UserId)
--PK_UserId 是自定義約束名 , PRIMARY KEY 是約束型別, (UserId)是具體的約束宣告

舉例,程式碼如下:

USE Demo --操作的資料庫名
GO
ALTER TABLE Test_Table1--要進行限制約束的表
add constraint PK_UserId PRIMARY KEY (UserId), --主鍵約束
    constraint CK_UserPwd CHECK(LEN(UserPwd)>=6), --查詢約束,長度限制
	constraint CK_Gender CHECK(Gender=0 OR Gender =1),--查詢約束,範圍限制
	constraint DF_Gender DEFAULT(0) for Gender,--預設約束,設定預設值
	constraint CK_E_mail CHECK(E_mail LIKE '%@%')  --檢查約束,格式檢查
GO
-------------------------------------------------------------------------------------
USE E_Market --操作的資料庫名

GO
ALTER TABLE OrderInfo --要進行限制約束的表

ADD CONSTRAINT PK_OrderId PRIMARY KEY(OrderId),
    CONSTRAINT FK_UserId Foreign KEY(UserId) References UserInfo(UserId), --外來鍵約束
	CONSTRAINT FK_ConmodityId Foreign KEY(CommodityId) References CommodityInfo(CommidityId),
	CONSTRAINT DF_PayWay Default('網上銀行') FOR PAYWAY,
	CONSTRAINT CK_Confirm Check(Confirm=0 OR Confirm =1),
	CONSTRAINT DF_Confirm Default(0)FOR Confirm ,
	CONSTRAINT CK_SendGoods Check(SendGoods=0 OR SendGoods =1),
	CONSTRAINT DF_SendGoods Default(0)For SendGoods
GO
貼士: 主外來鍵約束時,PRIMARY KEY ,FOREIGN KEY,其餘約束不用加KEY

注意:1.外來鍵約束時要注意外來鍵FK_xx 必須與引用的主鍵列的型別 長度 完全一致

         2.外來鍵約束引用的表中必須有主鍵列

         3.當新增約束的表中已存在資料,但又要對其新增約束,只需要修改第一行 ALTER TABLE 表名  WITH NOCHECK (但是對與之前的資料,將不做任何檢查)

 設定外來鍵FK時,外來鍵通過將列連線到另一個表中的唯一鍵而工作,並且該唯一鍵必須定義為某種唯一索引形式,即主鍵或其他唯一索引。(2017-3-12新增)