我需要表格:
CREATE TABLE `artist` (
`name` TEXT NOT NULL,
`gender` TEXT NOT NULL,
`city` TEXT NOT NULL,
PRIMARY KEY(name)
);
和
create table artwork(
title text,
location text,
artist text,
primary key (title, artist),
foreign key (artist) references artist(name)
);
'artwork'表中的'p''artist'列允许我插入不在引用列中的数据。
FOREIGN KEY约束还可以防止无效数据 插入到外键列中,因为它必须是其中之一 它指向的表中包含的值。 (c)W3school
我做错了吗?
答案 0 :(得分:5)
您使用的是SQLite吗?
如果是这样,你需要先运行
PRAGMA foreign_keys = ON;虽然SQLite确实提供了外键约束,但默认情况下它被禁用。
答案 1 :(得分:0)
外键约束中不支持文本列,因为它们无法编入索引。根据官方文件:
不支持外键列上的索引前缀。一 这样做的结果是不能包含BLOB和TEXT列 在外键中,因为这些列上的索引必须始终包含 前缀长度。
来源:http://dev.mysql.com/doc/refman/5.0/en/create-table-foreign-keys.html