限制表插入或更新

时间:2012-12-02 18:36:45

标签: php postgresql

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

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

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

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

现在,我需要将表限制为插入或更新,否则会创建循环层次结构。 我怎样才能做到这一点 ?

1 个答案:

答案 0 :(得分:1)

出于商业目的,我不会依赖自动生成的标识符,这通常会导致比解决的问题更多的问题。关于修改表的约束,您可以查看rule system

它允许您即时重写查询:

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

这将阻止在给定表中插入。当然,这并不像约束那样,因为它不会引发错误,因此不会使事务无效。