gpt4 book ai didi

sql - PostgreSQL 找到 CREATE TABLE 语句

转载 作者:行者123 更新时间:2023-11-29 13:15:53 24 4
gpt4 key购买 nike

我正在创建一个函数,它将创建一个新表并将有关该表的信息插入到其他表中。
要创建该表,我正在使用

CREATE TABLE IF NOT EXISTS

声明。遗憾的是,它没有更新 PostgreSQL 中的 FOUND 特殊变量,我也找不到任何其他可以更新的变量。

在 PL/PGSQL 中有什么方法可以知道该语句是否创建了一个表?

它的目标是不使其他表中的信息翻倍。

最佳答案

您可以将 CREATE TABLE ASON_ERROR_ROLLBACK 结合使用:

BEGIN;

-- Do inital stuff

\set ON_ERROR_ROLLBACK on
CREATE TABLE my_table AS
SELECT id, name FROM (VALUES (1, 'Bob'), (2, 'Mary')) v(id, name);
\set ON_ERROR_ROLLBACK off

-- Do remaining stuff

END;

说白了,\set ON_ERROR_ROLLBACK on postgres 会在每个语句之前创建一个保存点,并根据该语句的成功自动回滚到这个保存点或释放它。

即使表创建失败,上面的代码也会执行初始和剩余的内容。

关于sql - PostgreSQL 找到 CREATE TABLE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49113198/

24 4 0