【发布时间】:2009-05-18 12:12:38
【问题描述】:
参考this question,我决定每年复制表格,用当年的数据创建表格,例如:
orders_2008
orders_2009
orders_2010
etc...
好吧,我知道速度问题可能只需要为每个元素设置 2 个表就可以解决,例如 orders_history 和 order_actual,但我认为一旦编写了处理程序代码,就没有区别了.. 只是很多表.
这些表甚至会有一些带有外键的子表; 例如,orders_2008 将有子 items_2008:
CREATE TABLE orders_2008 (
id serial NOT NULL,
code character(5),
customer text
);
ALTER TABLE ONLY orders_2008
ADD CONSTRAINT orders_2008_pkey PRIMARY KEY (id);
CREATE TABLE items_2008 (
id serial NOT NULL,
order_id integer,
item_name text,
price money
);
ALTER TABLE ONLY items_2008
ADD CONSTRAINT items_2008_pkey PRIMARY KEY (id);
ALTER TABLE ONLY items_2008
ADD CONSTRAINT "$1" FOREIGN KEY (order_id) REFERENCES orders_2008(id) ON DELETE CASCADE;
所以,我的问题是:您认为每 1 月 1 日复制这些表的最佳方法是什么,当然还要保留表依赖关系?
一个 PHP/Python 脚本,一个又一个查询,为新年重建结构(由 cron 作业调用)? PostgreSQL 的函数可以这样使用吗? 如果是,如何(一个小例子会很好)
实际上我选择第一种方式(包含结构的 .sql 文件,以及由 cronjob 加载的重建结构的 php/python 脚本),但我想知道这是否是最好的方式。
编辑: 我已经看到 pgsql 函数 CREATE TABLE LIKE,但是必须在第二次添加外键......否则它将保持新表引用到旧表。
【问题讨论】:
标签: php postgresql database