外键列允许插入值,是不是在引用的列
问题描述:
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