GreenPlum - 带触发器的表 - 插入失败
Posted
技术标签:
【中文标题】GreenPlum - 带触发器的表 - 插入失败【英文标题】:GreenPlum - Table With Trigger - Insert Failed 【发布时间】:2014-03-11 04:19:33 【问题描述】:这是我第一次在青梅环境中使用触发器。我想我已经完成了大部分设置,但是在插入数据时遇到了一些问题。这是我的触发器
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)
我认为错误是因为我使用嵌套查询来插入数据。不知道如何解决这个问题。任何建议。提前感谢您的帮助
【问题讨论】:
如果您显示leads.my_trigger
的定义可能会有所帮助。
完成。添加信息
错误信息表明Greenplum在触发器中不支持DML(insert
、update
、delete
)。
我想是有道理的。我改用了规则
【参考方案1】:
我知道,Greenplum 中对触发器的支持非常有限,它不支持 DML 操作。
我想知道你是如何做到这一点的,我的意思是你在之前的 cmets 中所说的如何应用这些规则
【讨论】:
以上是关于GreenPlum - 带触发器的表 - 插入失败的主要内容,如果未能解决你的问题,请参考以下文章