【发布时间】:2012-01-07 17:11:50
【问题描述】:
我之前在 postgres 中插入了触发器
CREATE OR REPLACE FUNCTION add_requestdate() RETURNS TRIGGER AS $$
DECLARE
BEGIN
new.requestdate := now();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER addrequestdate
BEFORE INSERT ON requests FOR EACH ROW EXECUTE PROCEDURE add_requestdate ();
但它不起作用!我有有效的解决方案...
CREATE OR REPLACE FUNCTION add_requestdate() RETURNS TRIGGER AS $$
DECLARE
BEGIN
UPDATE requests SET requestdate=now() WHERE id=NEW.id;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER addrequestdate
BEFORE INSERT ON requests FOR EACH ROW EXECUTE PROCEDURE add_requestdate ();
我只有一个问题。为什么new.requestdate := now(); 不起作用?
【问题讨论】:
-
什么错误?在我的 PostgreSQL 9.0 版本中,第一个示例没有问题。你可以把表定义,以及你运行的SQL命令吗?而你的 PostgreSQL 版本是?
-
请定义“不起作用!”。第二个触发器只有在
requests.id不是唯一的情况下才有效 - 在具有相同id的其他行上。id是唯一的吗?是否涉及其他其他触发器?
标签: sql postgresql triggers