Nic*_*ick 5 postgresql foreign-keys alter-table
要创建表我使用:
CREATE TABLE category
(
cat_id serial NOT NULL,
cat_name character varying NOT NULL,
parent_id integer NOT NULL,
CONSTRAINT cat_id PRIMARY KEY (cat_id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE category
OWNER TO pgsql;
Run Code Online (Sandbox Code Playgroud)
parent_id是另一个类别的id.现在我有一个问题:如何与其子级级联删除记录?我需要将parent_id设置为cat_id的外键.我试试这个:
ALTER TABLE category
ADD CONSTRAINT cat_cat_id_fkey FOREIGN KEY (parent_id)
REFERENCES category (cat_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
Run Code Online (Sandbox Code Playgroud)
但它落在:
ERROR: insert or update on table "category" violates foreign key constraint "cat_cat_id_fkey"
DETAIL: Key (parent_id)=(0) is not present in table "category".
Run Code Online (Sandbox Code Playgroud)
您遇到的问题 - parent_id层次结构顶部的类别是什么?
如果它将null- 它将打破NOT NULLconstratint.
如果它会是一些任意数字0- 它会破坏外键(就像在你的例子中).
常见的解决办法-滴NOT NULL上constratint parent_id并设置parent_id到null顶级类别.
| 归档时间: |
|
| 查看次数: |
18208 次 |
| 最近记录: |