我需要设置一个“ON INSERT”规则,该规则将更新插入行中的一列(而不是更新整个条目集的列):
CREATE OR REPLACE RULE _myrule AS ON INSERT TO myTable DO UPDATE myTable SET col1 = 'test' ;
以上语句将为所有条目设置“test”字符串...我不知道如何在规则语法中指定此内容。
提前感谢您的帮助!
我需要设置一个“ON INSERT”规则,该规则将更新插入行中的一列(而不是更新整个条目集的列):
CREATE OR REPLACE RULE _myrule AS ON INSERT TO myTable DO UPDATE myTable SET col1 = 'test' ;
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 - 在此处放置您的主键名称
CREATE OR REPLACE RULE myTable_ins AS ON INSERT TO "myTable"
DO ALSO
UPDATE "myTable" SET
col1 = 'test'
WHERE id = NEW.id
;
UPDATE myTable SET col1 = 'test' WHERE gid = NEW.gid;
。插入运行后,“col1”仍然为空。 - wiltomap
where pk_column = new.pk_column
的内容来限制更新。手册中有一个示例:http://www.postgresql.org/docs/current/static/rules-update.html(需要向下滚动相当多的内容)。 - user330315