要创建表我使用:
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;
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
但它落在:
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".
您遇到的问题 – 层次结构顶部的类别的parent_id是什么?
如果它将为null – 它将破坏NOT NULL constratint.
如果它将是一些任意数字,如0 – 它将打破外键(如在您的示例中).
常见的解决方案 – 将NOT NULL constratint放在parent_id上,并将parent_id设置为null,用于顶级类别.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。