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



我想在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;

来自 CREATE DATABASE 命令的文档:

创建数据库不能在事务块内执行。

自从:

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

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

最新更新