我想在SQL Server 2008中創建表,但我不知道如何創建複合主鍵。我怎樣才能做到這一點?如何在SQL Server 2008中創建複合主鍵
回答
create table my_table (
column_a integer not null,
column_b integer not null,
column_c varchar(50),
primary key (column_a, column_b)
);
使用**主鍵之間的區別是什麼Key **和** CONSTRAINT **就像在@ matthew-abbott的例子中一樣? – mateuscb 2011-10-06 19:57:36
它創建一個命名約束,可以通過名稱刪除/更新 – longhairedsi 2012-12-06 14:32:58
不完全正確。兩者都創建「命名約束」。只有前者,你不能控制命名。但是,一旦創建,你可以查找使用的名稱,並刪除/更新名稱... – Auspex 2017-07-03 15:53:53
CREATE TABLE UserGroup
(
[User_Id] INT NOT NULL,
[Group_Id] INT NOT NULL
CONSTRAINT PK_UserGroup PRIMARY KEY NONCLUSTERED ([User_Id], [Group_Id])
)
+1 - 是的,命名你的約束人,否則Sql Server會做一些令人討厭的事情,如命名他們PK_UserGrou_5DEAEAF5在一個版本的DB和PK_UserGrou_3214EC0777F66C69另一個。如果你需要更新或刪除PK,這是一個痛苦,因爲你必須先從數據庫中獲取名稱,然後使用動態sql(或者先在代碼中構建命令)。而且,它很醜。 – monty 2015-10-02 00:07:19
我有什麼理由不希望我的PK被聚集? – 4AM 2017-05-16 14:43:43
@ 4AM這可能會回答你的問題:[鏈接](https://dba.stackexchange.com/questions/7741/when-should-a-primary-key-be-declared-non-clustered) – Dongminator 2017-06-08 22:53:45
通過企業管理(SSMS)...
- 右鍵單擊表要創建的組合鍵,然後選擇設計。
- 突顯希望由列,以形成一個組合鍵
- 右鍵點擊過這些列和設置主鍵
要看到,那麼你可以用鼠標右鍵單擊Table
>Script Table As
的SQL >Create To
謝謝。這是最安全/最簡單的方法,不會讓我的SQL語法變得糟糕 – AlbatrossCafe 2017-04-11 21:42:11
這使得那些想要通過設計/ guid界面進行快速修復的人很容易。謝謝您的幫助。 – 2017-06-28 16:03:20
首先創建數據庫和表,手動添加列。在哪一列作爲主鍵。您應該右鍵單擊此列並設置主鍵並設置主鍵的種子值。
創建表的複合唯一鍵
ALTER TABLE [TableName] ADD UNIQUE ([Column1], [Column2], [column3]);
UNIQUE鍵與PRIMARY鍵不一樣! – 2016-07-20 16:01:13
我知道我遲到了這個晚會,但是對於現有的表,請嘗試:
ALTER table TABLE_NAME
ADD CONSTRAINT [name of your PK, e.g. PK_TableName] PRIMARY KEY CLUSTERED (column1, column2, etc.)
CREATE TABLE UserGroup
(
[User_Id] INT Foreign Key,
[Group_Id] INT foreign key,
PRIMARY KEY ([User_Id], [Group_Id])
)
也添加一些說明 – 2016-10-07 22:53:10
6年後,語法不正確! – 2016-12-08 05:40:51
對於MSSQL服務器2012
CREATE TABLE usrgroup(
usr_id int FOREIGN KEY REFERENCES users(id),
grp_id int FOREIGN KEY REFERENCES groups(id),
PRIMARY KEY (usr_id, grp_id)
)
UPDATE
我應該加上!
如果你想要改變這些外鍵/主鍵,首先你應該創建約束或者你不能做出改變。如下所示;
CREATE TABLE usrgroup(
usr_id int,
grp_id int,
CONSTRAINT FK_usrgroup_usrid FOREIGN KEY (usr_id) REFERENCES users(id),
CONSTRAINT FK_usrgroup_groupid FOREIGN KEY (grp_id) REFERENCES groups(id),
CONSTRAINT PK_usrgroup PRIMARY KEY (usr_id,grp_id)
)
其實最後的方法是更健康和連續。你可以看看FK/PK約束名稱(dbo.dbname> Keys> ..)但是如果你不使用約束,MSSQL會自動創建隨機的FK/PK名字。您需要查看您需要的每個更改(更改表)。
我建議您爲自己設置一個標準,並且應該根據您的標準定義約束。你不必記住,你不會想太久。總之,你工作得更快。
這不創造PK但只有FK,不是? – batmaci 2017-06-09 15:15:34
@batmaci;不,這是FK和雙FK組對PK。這種使用更健康。我建議。當你不創建PK時,你也可以使用。 – 2017-06-17 11:58:06
- 1. sql server 2008複合鍵
- 2. SQL Server如何存儲複合主鍵?
- 3. SQL Server複合主鍵
- 4. 在sql server中創建主鍵
- 5. Mongojack-如何創建複合主鍵
- 6. 如何創建JPA類複合主鍵
- 7. 如何創建複合外鍵的表,複合主鍵
- 8. 如何在SQL Server 2008中創建「無重複」列?
- 9. 如何創建SQL Server 2008中
- 10. 如何創建SQL Server 2008中
- 11. SQL SERVER,複合主鍵處理
- 12. SQL Server 2008中創建
- 13. 創建MS SQL Server 2008中
- 14. 如何在SQL Server中使用2個主鍵創建表?
- 15. 創建複合主鍵在子類(JPA)
- 16. 如何創建一個外鍵複合主鍵
- 17. ROO:如何在實體中創建複合主鍵
- 18. 如何在SQL Server 2005中創建複合唯一約束
- 19. 在SQL Server 2008中創建測試表
- 20. 如何在SQL Server 2008標準中創建SQL代理作業?
- 21. DB Designer創建複合主鍵
- 22. SQL Server中的複合表,主鍵,外鍵和索引
- 23. 在數據庫中創建「主」的SQL Server否認2008 R2
- 24. 將在SQL Server 2008中創建的SSIS包複製到SQL Server 2005中
- 25. 帶有組合主鍵自動增量一部分的SQL 2008複合主鍵
- 26. 在具有複合主鍵的Sql Server 2000中的IGNORE_DUP_KEY
- 27. 如何在ArrangoDB創建複合鍵
- 28. SQL Server 2008:使用主鍵更新表
- 29. 主鍵對Microsoft SQL Server 2008的含義
- 30. 如何獲得一個表的SQL Server中的主鍵2008
正如你剛剛接觸asp.net時的一條建議:複合主鍵是一件壞事,通常表明設計思路不夠透明 – smirkingman 2010-10-13 10:12:45
@smirkingman可以解決很重要的問題,複合主鍵。例如,當您有數百/數千個將行保存到單個表/實體類型的用戶時。你需要用user-id排序的行,再加上第二個值。您的價值判斷根本不正確,否則我們很快就會棄用此功能。 – 2012-07-01 06:23:54
[在SQL Server中創建複合主鍵]的可能的副本(http://stackoverflow.com/questions/12594791/creating-composite-primary-key-in-sql-server) – 2016-08-03 08:14:19