我需要设置一个' ON INSERT'将更新插入行中的列的规则(并且不更新条目的孔集的列):
CREATE OR REPLACE RULE _myrule AS ON INSERT TO myTable DO UPDATE myTable SET col1 = 'test' ;
上述声明将设置'测试'所有条目的字符串...我无法找到如何在规则语法中指定它。
提前感谢您的帮助!
答案 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
;