当数据库名称匹配时,下面的脚本运行但不创建用户?我就是不知道我哪里做错了。
DO
$do$
DECLARE
lc_s_db_name CONSTANT VARCHAR(30) := 'dev';
lv_db_name VARCHAR(100);
BEGIN
select datname into lv_db_name from pg_catalog.pg_database;
IF lv_db_name in (lc_s_db_name )
THEN
create role monitor LOGIN PASSWORD 'monitor';
END IF;
END
$do$;
您的select查询选择一个数据库名称的所有数据库的列表。那并不一定是你要联系的人。
要获取所连接的数据库的名称,使用current_database()
DO
$do$
DECLARE
lc_s_db_names CONSTANT text[] := array['dev', 'dev2'];
BEGIN
IF current_database() = any(lc_s_db_names)
THEN
create role monitor LOGIN PASSWORD 'monitor';
END IF;
END
$do$;