我是PHP和PostgreSQL的新手,,,,
我使用以下查询创建了一个表,
CREATE TABLE public.affiliate (
id INTEGER NOT NULL,
name VARCHAR(32),
parent INTEGER,
CONSTRAINT affiliate_pkey PRIMARY KEY(id)
);
在这里,我以这样的方式填充表格,即id以1开头,其余节点按顺序编号,最大深度数设置为10。
现在,我需要将表限制为插入或更新,否则会创建循环层次结构。 我怎样才能做到这一点 ?
答案 0 :(得分:1)
出于商业目的,我不会依赖自动生成的标识符,这通常会导致比解决的问题更多的问题。关于修改表的约束,您可以查看rule system。
它允许您即时重写查询:
CREATE RULE prevent_insert AS
ON INSERT
TO public.affiliate
DO INSTEAD
NOTHING;
这将阻止在给定表中插入。当然,这并不像约束那样,因为它不会引发错误,因此不会使事务无效。