【问题标题】:Dynamically create table after INSERT to another table插入到另一个表后动态创建表
【发布时间】:2015-12-10 06:31:13
【问题描述】:

我有一张桌子:

create table monthly_tran (id int,somedata text);

一年中的每个月一次将一行添加到此表中。 向该表插入一行后,我需要创建一个 new 表:

create table monthly_proc_X(id int,tranid int,somedata text);

X in monthly_proc_X 应该是表monthly_tran 中新插入行的id
例如,如果插入了(9,'some values'),则应该创建一个表monthly_proc_9

注意:PostgreSQL 9.2

【问题讨论】:

  • 很遗憾您没有提供您的 Postgres 版本,这可能会破坏可能的支持。
  • @ErwinBrandstetter 更新

标签: postgresql triggers plpgsql dynamic-sql postgresql-9.2


【解决方案1】:

您可以像这样创建触发器

CREATE OR REPLACE FUNCTION dynTable() RETURNS TRIGGER AS $$
    BEGIN
execute 'create table monthly_proc_'||new.id||'(id int,tranid int,somedata text)';
return new;
    END;
$$ LANGUAGE plpgsql;

并分配给monthly_tran

CREATE TRIGGER tgr_create_table AFTER INSERT ON monthly_tran
FOR EACH ROW EXECUTE PROCEDURE dynTable();

触发器dynTable()将在向monthly_tran插入新行时动态创建表

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 2010-10-24
    • 1970-01-01
    相关资源
    最近更新 更多