我正在尝试创建一个名称中包含今天日期的新架构。命名如下
select concat('Copy_', replace(now()::date::text,'-',''))
Copy_20181102
所以我尝试:
CREATE SCHEMA concat('Copy_', replace(now()::date::text,'-',''))
AUTHORIZATION postgres;
ERROR: syntax error at or near "(" LINE 1: CREATE SCHEMA concat('Copy_', replace(now()::date::text,'-',... ^ SQL state: 42601 Character: 21
我该如何解决这个问题?
最佳答案
使用纯 SQL 无法做到这一点。您需要使用过程语言:
--Anonymous block
DO $$
BEGIN
EXECUTE format('CREATE SCHEMA %I AUTHORIZATION postgres',
concat('Copy_', replace(now()::date::text,'-','')));
END $$;
有关动态命令的更多信息 here .
关于sql - 创建名称中包含当前日期的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53121673/