1

我是 PHP 和 PostgreSQL 的新手,,,,

我用以下查询创建了一个表,,,

CREATE TABLE public.affiliate (
  id INTEGER NOT NULL,
  name VARCHAR(32),
  parent INTEGER,
  CONSTRAINT affiliate_pkey PRIMARY KEY(id)
);

在这里,我以 id 以 1 开头的方式填充表,其余节点按顺序编号,最大深度数设置为 10。

现在,我需要约束表以防止插入或更新,否则会创建循环层次结构。我怎样才能做到这一点 ?

4

1 回答 1

1

我不会出于商业目的依赖自动生成的标识符,这通常会导致比它解决的问题更多的问题。关于修改表的约束,可以看一下规则系统

它允许您即时重写查询:

CREATE RULE prevent_insert AS 
  ON INSERT 
  TO public.affiliate 
  DO INSTEAD 
    NOTHING;

这将防止在给定表中插入。当然,这与约束的行为并不完全相同,因为它不会引发错误,因此不会使事务无效。

于 2012-12-03T09:38:27.243 回答