gpt4 book ai didi

sql - 是否可以在同一张表中引用其他列?

转载 作者:行者123 更新时间:2023-12-04 06:23:10 24 4
gpt4 key购买 nike

如果博客具有“类别”表,例如:

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关键字之后,表名不是可选的,因此即使您引用同一表中的列,也必须指定它。从 documentation:

reference_definition:
引用tbl_name(index_col_name,...)
[满满|匹配部分|简单配对]
[ON DELETE reference_option]
[ON UPDATE reference_option]

看到它在线上工作: sqlfiddle

关于sql - 是否可以在同一张表中引用其他列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11459758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com