2015-12-06 64 views
3

我有一個表中已經定義了一個主鍵。我想添加一個列,它也必須是主鍵的一部分。如何做到這一點?如何更改表中現有的主鍵?

+0

ALTER TABLE提供商DROP PRIMARY KEY,ADD PRIMARY KEY(人,地,事)做到這一點; – Naruto

回答

6

如果PK_MY_TABLE是現有主鍵約束名稱:

ALTER TABLE MY_TABLE DROP CONSTRAINT PK_MY_TABLE; 

COMMIT; 

alter table MY_TABLE 
add constraint PK_MY_TABLE 
primary key (ID,ID_1); 

ALTER TABLE MY_TABLE DROP CONSTRAINT PK_MY_TABLE, ADD CONSTRAINT PK_MY_TABLE PRIMARY KEY (ID,ID_1); 
+0

是否沒有單一的命令來實現它,而不必先刪除約束?我很可能會使用ALTER TABLE名稱的ADD語句來添加列。 –

+0

它仍然首先刪除約束。 :) –

+1

現有的主鍵必須首先下降,因爲必須只有一個PK –

2

一種優雅的方式來做到這一點單查詢

在MYSQL

ALTER TABLE TABLE_NAME DROP PRIMARY KEY, ADD PRIMARY KEY(ID,ID_1); 

在Firebird: -

ALTER TABLE TABLE_NAME DROP CONSTRAINT TEST_CONST, ADD PRIMARY KEY (ID,ID_1) 
+2

據我所知,DROP PRIMARY KEY在firebird中不起作用。 –

+0

@BlurrySterk感謝您指出 – Naruto

1

你不能這樣做,這是一個步驟中,火鳥

你需要做的,例如

ALTER TABLE MY_TABLE DROP約束PK_MY_TABLE以上報價;

alter table add id_1;

COMMIT;

alter table MY_TABLE add constraint PK_MY_TABLE primary key(ID,ID_1);

commit;

強烈建議,當你有獨家使用的數據庫