PostgreSQL:仅更新插入的行

时间:2014-08-22 12:08:00

标签: postgresql sql-update rule

我需要设置一个' ON INSERT'将更新插入行中的列的规则(并且不更新条目的孔集的列):

CREATE OR REPLACE RULE _myrule AS ON INSERT TO myTable DO UPDATE myTable SET col1 = 'test' ;

上述声明将设置'测试'所有条目的字符串...我无法找到如何在规则语法中指定它。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

1) 第一个解决方案(使用触发器)

CREATE OR REPLACE FUNCTION myRule() RETURNS trigger as $myRule$
   BEGIN
    NEW.col1 := 'test';
    RETURN NEW;
  END;
$myRule$
LANGUAGE plpgsql;



 -- DROP  TRIGGER myRule ON "myTable";

 CREATE TRIGGER myRule 
 BEFORE INSERT 
 ON "myTable"
 FOR EACH ROW 
 EXECUTE PROCEDURE myRule();

2) 第二个解决方案(使用规则)

id - 请输入您的PK名称

CREATE OR REPLACE RULE  myTable_ins AS ON INSERT TO "myTable"
  DO ALSO
    UPDATE "myTable" SET 
        col1 = 'test'
    WHERE id = NEW.id       
;