如题
换句话说,数据库如何实现每天自动产生一张表。
表的格式为DB_20071221
不知道各位高手有无实现的办法。

解决方案 »

  1.   

    linux下吗?
    我觉得可以这么实现:
    写一个.sh脚本,里面的内容是打开数据库,创建表,表名格式为DB_20071221.关闭数据库等.
    使用 操作系统自带的Cron 定时,比如说每天10点执行.sh脚本.
      

  2.   

    楼上的这个方法我没有试过,可以考虑。
    不过我觉得如果在数据库中能自己实现那是最好的。
    我记得mssql上job的功能能实现,但是postgressql上我就不知道如何做了
    也不知道在pgsql上如何实现触发器的功能。
      

  3.   

    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"();
    在数据库本身做以我的理解好象是不可以
      

  4.   

    可以使用shell+PostgreSQL的继承来实现.如下:--PostgreSQL里边建立如下的母表create table DB(id int);
    --建立shell脚本,如下#!/bin/shDATE=`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
    ......