2013-05-08 17 views
2

據我所知,有創建複合PK的2種方式,但不知道它們的區別或者是很好的一個:正確的方法來創建複合PK

CREATE TABLE AppUsers 
(
Id int NOT NULL, 
Username varchar(20) NOT NULL, 
LastName varchar(100), 
FirstName varchar(100), 
PRIMARY KEY (Id, Username) 
) 

VS

CREATE TABLE AppUsers 
(
Id int NOT NULL, 
Username varchar(20) NOT NULL, 
LastName varchar(100), 
FirstName varchar(100), 
CONSTRAINT pk_AppUsers PRIMARY KEY (Id, Username) 
) 

回答

1

規格:

根據這一http://dev.mysql.com/doc/refman/5.0/en/create-table.htmlhttp://dev.mysql.com/doc/refman/5.0/en/alter-table.html,該CONSTRAINT關鍵詞是運PRIMARY KEY

最佳實踐:

我會說,用你喜歡哪個就可讀性的一個。我傾向於限制多餘的字母,類似於使用JOIN而不是INNER JOIN

+0

絕對正確,只是在發佈問題後才意識到。除此之外,我還發現使用CONSTRAINT關鍵字將使您的代碼在SQL服務器和Oracle上運行(以防有人對通過不同DBMS使用相同模式感興趣) – Kitinz 2013-05-08 15:41:48

+0

我認爲oracle接受主鍵也沒有約束字 – Sebas 2013-05-08 15:50:29

+0

CONSTRAINT語法允許您控制約束的名稱。當錯誤消息包含違反約束的名稱時,這會很有用。如果您瀏覽元數據(很少完成),它也可能很有用。 – 2013-05-08 20:03:57