2017-07-28 84 views
2

請告訴我,或者我應該給外鍵命名?MySQL:爲外鍵命名是否重要?

CONSTRAINT constraint_name 
FOREIGN KEY foreign_key_name (columns) 
REFERENCES parent_table(columns) 
ON DELETE action 
ON UPDATE action 

我可以用它的名字來約束一些操作,但是我可以用外鍵名稱做什麼?請給我一些例子。

回答

1

由於文檔解釋:

MySQL的要求對外鍵引用鍵索引,使 外鍵檢查可以快速,不需要表掃描。 在 引用表中,必須有一個索引,其中外鍵 列按照相同順序列爲第一列。如果 不存在,則會在引用表上自動創建這樣的 索引。如果您創建 另一個可用於強制執行外鍵約束的索引,則此索引可能稍後會自動丟棄。 index_name,如果給出,則按前面所述使用。

換句話說,你所提供的不是一個「外鍵名」,而是一個「(外鍵)索引名」。

命名索引對於跟蹤該索引非常有用。

說實話,雖然我不提供這樣的名字。我更願意在外鍵上​​聲明一個索引,而不是讓數據庫爲我做。

(注:大多數數據庫時的外鍵聲明不會自動創建索引)

+0

謝謝,那是我需要的! – Solembum

1

是的。

如果您想在將來改變或放下約束條件,那麼只能使用名稱。

DROP FOREIGN KEY constraint_name;

你可以check here

+0

但我的問題是:「我如何使用'foreign_key_name'」,而不是'constarint_name' – Solembum