CREATE TABLE `artist` (
`name` TEXT NOT NULL,
`gender` TEXT NOT NULL,
`city` TEXT NOT NULL,
PRIMARY KEY(name)
);
和
「藝術家」中的「藝術品」表列允許我插入數據這不在引用列中。
外鍵約束還防止從被 插入到外鍵列無效的數據,因爲它必須是包含在它指向表中的 值之一。 (c)W3school
我做錯了嗎?
CREATE TABLE `artist` (
`name` TEXT NOT NULL,
`gender` TEXT NOT NULL,
`city` TEXT NOT NULL,
PRIMARY KEY(name)
);
和
「藝術家」中的「藝術品」表列允許我插入數據這不在引用列中。
外鍵約束還防止從被 插入到外鍵列無效的數據,因爲它必須是包含在它指向表中的 值之一。 (c)W3school
我做錯了嗎?
你使用SQLite?
如果是這樣,您需要先運行
PRAGMA foreign_keys = ON;,而SQLite確實提供了外鍵約束,默認情況下它是禁用的。
外鍵約束不支持文本列,因爲它們無法建立索引。根據官方文檔:
不支持外鍵列上的索引前綴。其中一個 的後果是BLOB和TEXT列不能包含在外鍵中 ,因爲這些列上的索引必須始終包含 前綴長度。
來源:http://dev.mysql.com/doc/refman/5.0/en/create-table-foreign-keys.html
名稱的類型是'TEXT',它是一個主鍵,只有在指定長度的情況下,纔可以將此列作爲鍵。 你的create table語句會給出錯誤。 – radar 2014-11-09 02:38:57
它不會給出錯誤。表格創建得很好,我可以看到它們。 – fermerius 2014-11-09 02:45:25
哪個版本的mysql?這些命令是從其他應用程序運行的。在這種情況下可能會使用一些默認長度。 – radar 2014-11-09 02:55:21