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

时间:2015-06-10 06:57:38

标签: sql postgresql

我使用此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')

如何只将记录插入儿童?

1 个答案:

答案 0 :(得分:0)

最后我找到了答案。在这些查询中没有问题,问题出在我的SELECT上。我应该只从parent_table中选择。

SELECT * FROM ONLY parent_table

而不是

SELECT * FROM parent_table

在我的父表中没有显示任何内容。