如何在postgres sql中实现每天自动产生一张表

czrjsj 2007-12-21 10:47:51
如题
换句话说,数据库如何实现每天自动产生一张表。
表的格式为DB_20071221
不知道各位高手有无实现的办法。
...全文
309 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
quickball 2008-01-03
  • 打赏
  • 举报
回复
自己写个脚本就搞定
mschen 2007-12-30
  • 打赏
  • 举报
回复
可以使用shell+PostgreSQL的继承来实现.如下:

--PostgreSQL里边建立如下的母表

create table DB(id int);


--建立shell脚本,如下

#!/bin/sh

DATE=`date +%Y%m%d`
CMD="create table DB_$DATE() inherits (DB)"
/usr/local/bin/psql -d icdata -U pgsql -c "$CMD"

--每天在crontab里边定时运行就可以建立如下的表了.

db_20071230
db_20071229
......
toddzst 2007-12-24
  • 打赏
  • 举报
回复
PGsql的触发器是先写一个函数:
比如说:
CREATE OR REPLACE FUNCTION "funUpdateGlobalInfoTableConfigureTS"()
RETURNS TRIGGER AS
$$
DECLARE
strSysTime TIMESTAMP;
sq interval;
BEGIN
SELECT INTO strSysTime localtimestamp(0);
SELECT INTO sq date_part('timezone_hour',current_timestamp)||'hours';
SELECT INTO strSysTime (strSysTime - sq );
UPDATE "GlobalInfoTable"
SET
"ConfigureTS" = strSysTime;
RETURN NULL;
END;
$$LANGUAGE plpgSQL;
然后在表上创建触发这个函数:
CREATE TRIGGER "triggerManageClientTableC"
AFTER INSERT OR UPDATE OR DELETE ON "ManageClientTable"
FOR EACH STATEMENT EXECUTE PROCEDURE "funUpdateGlobalInfoTableConfigureTS"();
在数据库本身做以我的理解好象是不可以
toddzst 2007-12-21
  • 打赏
  • 举报
回复
linux下吗?
我觉得可以这么实现:
写一个.sh脚本,里面的内容是打开数据库,创建表,表名格式为DB_20071221.关闭数据库等.
使用 操作系统自带的Cron 定时,比如说每天10点执行.sh脚本.
czrjsj 2007-12-21
  • 打赏
  • 举报
回复
楼上的这个方法我没有试过,可以考虑。
不过我觉得如果在数据库中能自己实现那是最好的。
我记得mssql上job的功能能实现,但是postgressql上我就不知道如何做了
也不知道在pgsql上如何实现触发器的功能。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧