在for循环中创建数据库,将循环的迭代器注入数据库名称

问题描述 投票:0回答:1

我想在for循环中创建四个数据库。但是,我收到了一个错误。你能帮我解决这个问题吗?

DO $$
    BEGIN
        FOR counter IN 1..2 LOOP
            CREATE DATABASE 'database_name_%', counter;
        END LOOP;
END; $$
ERROR:  syntax error at or near "'Counter: %'"
LINE 4:             CREATE DATABASE 'Counter: %', counter;
sql postgresql
1个回答
0
投票

CREATE DATABASE命令的文档:

无法在事务块内执行CREATE DATABASE。

从那以后:

PostgreSQL实际上将每个SQL语句视为在事务中执行。如果您不发出BEGIN命令,则每个单独的语句都有一个隐式BEGIN和(如果成功)COMMIT。由BEGIN和COMMIT包围的一组语句有时称为事务块

您无法在函数中创建数据库。因此,即使您可以处理当前问题,您也无法执行此功能。

© www.soinside.com 2019 - 2024. All rights reserved.