[英]How to execute a function instead insert into table in postgres
我使用此SQL代码来检测应使用哪个表进行插入
CREATE OR REPLACE FUNCTION detect_table() RETURNS TRIGGER AS $$
BEGIN
IF ( NEW.ip = '192.168.1.1') THEN INSERT INTO child_table_one VALUES (NEW.*);
ELSIF ( NEW.ip = '192.168.1.100') THEN INSERT INTO child_table_two VALUES (NEW.*);
ELSE RAISE EXCEPTION 'IP not correct ';
END IF;
RETURN NULL;
END
$$ LANGUAGE 'plpgsql';
有了这个触发
CREATE TRIGGER insert_trigger
BEFORE INSERT ON parent_table
FOR EACH ROW
EXECUTE PROCEDURE detect_table();
但是此查询同时插入到父表和子表中。
INSERT INTO parent_table VALUES('192.168.1.1', 'other data')
如何将记录仅插入孩子?
终于我找到了答案。 这些查询没有问题,问题出在我的SELECT上。 我应该只从parent_table中选择。
SELECT * FROM ONLY parent_table
代替
SELECT * FROM parent_table
在我的父表中未显示任何内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.