1

这是我第一次在青梅环境中使用触发器。我想我已经完成了大部分设置,但是在插入数据时遇到了一些问题。这是我的触发器

CREATE TRIGGER insert_trigger
    BEFORE INSERT ON leads.abhi_temp
    FOR EACH ROW EXECUTE PROCEDURE leads.my_trigger();

这是触发器的定义

CREATE OR REPLACE FUNCTION leads.my_trigger()
RETURNS TRIGGER AS $$
BEGIN
    IF ( NEW.date >= DATE '2003-01-01' AND
         NEW.date < DATE '2003-12-31' ) THEN
        INSERT INTO leads.abhi_temp_y2003 VALUES (NEW.*);
    ELSIF ( NEW.date >= DATE '2004-01-01' AND
         NEW.date < DATE '2004-12-31' ) THEN
        INSERT INTO leads.abhi_temp_y2004 VALUES (NEW.*);
    END IF;
    RETURN NULL;
END;
$$
LANGUAGE plpgsql;

现在要将数据插入我使用的表中

insert into leads.myData (select column1, column2 from leads.someOtherDara where column1 = '1');

但这给了我一个错误

ERROR:  function cannot execute on segment because it issues a non-SELECT statement (functions.c:133)

我认为错误是因为我使用嵌套查询来插入数据。不知道如何解决这个问题。任何建议。在此先感谢您的帮助

4

1 回答 1

0

我知道,Greenplum 中对触发器的支持非常有限,它不支持 DML 操作。

我可以知道你是如何做到这一点的,我的意思是如何应用规则,就像你在之前的评论中所说的那样

于 2015-03-23T12:55:51.073 回答