T-SQL語句新增約束
阿新 • • 發佈:2019-01-31
語法: 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新增)