如果博客有一个“类别”表,如下所示:
CREATE TABLE categories
(
id INTEGER PRIMARY KEY AUTO_INCREMENT,
parent_id INTEGER NOT NULL,
name VARCHAR(30) NOT NULL,
description TEXT,
count INTEGER NOT NULL DEFAULT 0
);
如果parent_id字段旨在引用类别表的“id”字段,那么如何添加一个约束来确保插入parent_id中的值引用id字段?
我只是想确保只有存在的类别 id 值才能用作新插入类别的父级。
是的,您可以引用同一个表中的列。
但该列应该可以为空,否则您无法插入第一条记录。
CREATE TABLE categories
(
id INTEGER PRIMARY KEY AUTO_INCREMENT,
parent_id INTEGER NULL,
name VARCHAR(30) NOT NULL,
description TEXT,
count INTEGER NOT NULL DEFAULT 0,
FOREIGN KEY (parent_id) REFERENCES categories(id)
);
请注意,在 REFERENCES 关键字之后,表名不是可选的,因此即使引用同一个表中的列,也必须指定它。来自文档 http://dev.mysql.com/doc/refman/5.1/en/create-table.html:
reference_definition:
REFERENCES tbl_name (index_col_name,...)
[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
[ON DELETE reference_option]
[ON UPDATE reference_option]
看看它在线工作:sqlfiddle http://sqlfiddle.com/#!2/f84d6/1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)