【发布时间】:2012-04-22 12:50:04
【问题描述】:
我目前有一个父表:
CREATE TABLE members (
member_id SERIAL NOT NULL, UNIQUE, PRIMARY KEY
first_name varchar(20)
last_name varchar(20)
address address (composite type)
contact_numbers varchar(11)[3]
date_joined date
type varchar(5)
);
还有两个相关的表:
CREATE TABLE basic_member (
activities varchar[3])
INHERITS (members)
);
CREATE TABLE full_member (
activities varchar[])
INHERITS (members)
);
如果类型为full,则将详细信息输入到full_member 表中,或者如果类型为basic,则将详细信息输入到basic_member 表中。我想要的是,如果我运行更新并将类型更改为basic 或full,则元组将进入相应的表。
我想知道我是否可以使用如下规则来做到这一点:
CREATE RULE tuple_swap_full
AS ON UPDATE TO full_member
WHERE new.type = 'basic'
INSERT INTO basic_member VALUES (old.member_id, old.first_name, old.last_name,
old.address, old.contact_numbers, old.date_joined, new.type, old.activities);
...然后从full_member中删除记录
只是想知道我的规则是否在附近,或者是否有更好的方法。
【问题讨论】:
标签: postgresql inheritance triggers constraints plpgsql