2011-03-15 41 views
1

我想知道是否可以修改外鍵?我該如何修改外鍵?

FOREIGN KEY (member) REFERENCES scores (level) ON DELETE CASCADE, 

而且我想將它更改爲:

FOREIGN KEY (member, subject) REFERENCES scores (level, subject) ON DELETE set null, 

這可能嗎?

回答

2

您不能在單個語句中修改密鑰,請參閱ALTER TABLE語法,其中沒有可用的ALTER CONSTRAINT。

您必須使用2個ALTER TABLE語句來完成您想要的操作。

使用ALTER TABLE DROP FOREIGN KEY刪除第一個中的密鑰。 使用ALTER TABLE ADD CONSTRAINT FOREIGN KEY在第二列中重新創建它。

您可以在一個事務中封裝這兩者以進行原子修改。

+0

我寫了alter table teb drop foreign key;但它有這個錯誤:錯誤1005:無法創建表'nehdi。#sql-6f0_2'(errno:150) – 2011-03-15 18:07:17

+0

@mehdi:您可以通過運行'SHOW ENGINE INNODB STATUS \ G'和讀取'最新的外鍵錯誤'部分。 – 2011-03-15 19:52:29