是否可以引用同一个表中的不同列?

2024-06-20

如果博客有一个“类别”表,如下所示:

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(使用前将#替换为@)

是否可以引用同一个表中的不同列? 的相关文章

随机推荐