繁体   English   中英

如何执行函数而不是插入到Postgres中的表中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM