先附上代码。
CREATE SEQUENCE os_template_id_seq;CREATE TABLE os_template ( id integer NOT NULL DEFAULT nextval('os_template_id_seq'::regclass), name varchar(30) NOT NULL DEFAULT '', PRIMARY KEY (id)) WITHOUT OIDS ;CREATE TABLE os_a ( LIKE os_template INCLUDING ALL) INHERITS (os_template) WITHOUT OIDS ;CREATE TABLE os_b ( LIKE os_template INCLUDING ALL) INHERITS (os_template) WITHOUT OIDS ;CREATE TABLE os_c ( LIKE os_template INCLUDING ALL) INHERITS (os_template) WITHOUT OIDS ;CREATE TABLE os_d ( LIKE os_template INCLUDING ALL) INHERITS (os_template) WITHOUT OIDS ;
创建父表 os_template, 然后创建子表 os_a...os_d, 子表通过关键字LIKE创建与源字段相同的新表, 通过关键字INHERITS实现继承父表的特性。
实际生产环境,程序逻辑中,如果只是通过调用os_template来增删查改,效率会很慢;可以尝试不使用 INHERITS ,只是做表分区操作,通过程序逻辑来判断针对某个子表进行增删查改, 这样便于数据维护,效率上也会有很大提升。