gpt4 book ai didi

postgresql - 如何在 PostgreSQL 中使用触发器在表中插入新行时创建新模式?

转载 作者:行者123 更新时间:2023-11-29 11:33:55 25 4
gpt4 key购买 nike

我有一个包含客户的表,每个国家/地区只有一个客户,对于此表中的每一行,我必须创建一个新模式并复制一些表。像这样:

Clients table's columns: 

client country
---------- -----------
john doe US
jane doe UK

模式:

clients_US
clients_UK

我需要创建一个触发器,以便在每次将新客户添加到客户表时自动创建这些模式,使用国家/地区列数据作为模式名称的一部分。

在一个完美的世界中,这会起作用,但显然行不通:

CREATE OR REPLACE FUNCTION gcpmanager.create_sle_schema() 
RETURNS trigger LANGUAGE plpgsql
AS
'begin
CREATE SCHEMA "clients_" + new.country
AUTHORIZATION postgres;
return new;
end;';

最佳答案

您将需要使用动态 SQL

CREATE OR REPLACE FUNCTION gcpmanager.create_sle_schema() 
RETURNS trigger LANGUAGE plpgsql
AS
$$
begin
execute 'CREATE SCHEMA clients_'||new.country||' AUTHORIZATION postgres';
return new;
end;
$$

顺便说一句:PostgreSQL 中的字符串连接运算符是 || 而不是 + (用于数字)

关于postgresql - 如何在 PostgreSQL 中使用触发器在表中插入新行时创建新模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6372948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com