GreenPlum - 带触发器的表 - 插入失败

时间:2014-03-11 04:19:34

标签: triggers nested greenplum

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

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)

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

1 个答案:

答案 0 :(得分:0)

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

我可以知道你是如何实现这一目标的,我的意思是如你所述的规则可以如你所说的那样应用