回覆列表
-
1 # snlnn2285
-
2 # 使用者9948825240217
可直接用sql語句。 一種是在建表時就寫出,語句如下: Create Table 表名 (欄位名1 Int Not Null, 欄位名2 nvarchar(13) Not Null Primary Key (欄位名1, 欄位名2), 欄位名3………… 欄位名N………… ) 另一種是在建表後更改,語句如下: ALTER TABLE 表名 WITH NOCHECK ADD CONSTRAINT [PK_表名] PRIMARY KEY NONCLUSTERED ( [欄位名1], [欄位名2] )
一、SQLServer建立聯合主鍵方法:1、在建表時就寫出,語句如下:Create Table 表名 (欄位名1 Int Not Null,欄位名2 nvarchar(13) Not Null Primary Key (欄位名1, 欄位名2),欄位名3…………欄位名N………… )2、在建表後更改,語句如下:ALTER TABLE 表名 WITH NOCHECK ADD CONSTRAINT [PK_表名] PRIMARY KEY NONCLUSTERED ([欄位名1],[欄位名2])二、聯合主鍵的好處:用2個欄位(或者多個欄位,後面具體都是用2個欄位組合)來確定一條記錄,說明,這2個欄位都不是唯一的,2個欄位可以分別重複,這麼設定的好處,可以很直觀的看到某個重複欄位的記錄條數。三、使用聯合主鍵情況:比如,你的訂單表裡有很多欄位,一般情況只要有個訂單號bill_no做主鍵就可以了,但是,現在要求可能會有補充訂單,使用相同的訂單號,那麼這時單獨使用訂單號就不可以了,因為會有重複。那麼你可以再使用個訂單序列號bill_seq來作為區別。把bill_no和bill_seq設成聯合主鍵。即使bill_no相同,bill_seq不同也是可以的。擴充套件資料:例子如下:主鍵A跟主鍵B組成聯合主鍵,主鍵A跟主鍵B的資料可以完全相同,聯合就在於主鍵A跟主鍵B形成的聯合主鍵是唯一的。 下例主鍵A資料是1,主鍵B資料也是1,聯合主鍵其實是11,這個11是唯一值,絕對不充許再出現11這個唯一值。(這就是多對多關係) 主鍵A資料主鍵B資料 1 1 2 2 3 3 主鍵A與主鍵B的聯合主鍵值最多也就是 11 12 13 21 22 23 31 32 33