我经常在 PostgreSQL (9.4.1) 中重新创建一个表,就像这样:
DROP TABLE IF EXISTS test.foo;
CREATE TABLE test.foo AS
SELECT * FROM test.dagi_kommune
WHERE ST_Area(wkb_geometry) < 500;
我想在表中添加注释,说明表的创建时间。创建基本评论没有问题,如下所示:
COMMENT ON TABLE test.foo IS 'Table create date: ';
而且我还可以生成一个独立的时间戳,像这样:
SELECT to_char(LOCALTIMESTAMP, 'YYYY-MM-DD HH:MI:SS');
但如果我尝试将时间戳放入评论中,如下所示:
COMMENT ON TABLE test.foo IS to_char(LOCALTIMESTAMP, 'YYYY-MM-DD HH:MI:SS');
我得到以下响应:
ERROR: syntax error at or near "to_char" LINE 10: COMMENT ON TABLE test.foo IS to_char(LOCALTIMESTAMP, 'YYYY-M... ^ ********** Error ********** ERROR: syntax error at or near "to_char" SQL state: 42601 Character: 276
如何将当前的“日期和时间”标记到表格的评论中?
最佳答案
您必须将语句作为动态 SQL 构建和执行。
DO
$do$
BEGIN
EXECUTE 'COMMENT ON TABLE b2 IS ''Table create date: '
|| to_char(LOCALTIMESTAMP, 'YYYY-MM-DD HH:MI:SS')
|| '''';
END
$do$
普通连接在这种情况下是安全的,对于不安全的输入,使用 format()
因此。见:
- Error when setting n_distinct using a plpgsql variable
- Table name as a PostgreSQL function parameter
- To convert from Python arrays to PostgreSQL quickly?
换行符是可选的。与脚本的单行代码相同:
DO $do$BEGIN EXECUTE 'COMMENT ON TABLE b2 IS ''Table create date: ' || to_char(LOCALTIMESTAMP, 'YYYY-MM-DD HH:MI:SS') || ''''; END $do$;
关于postgresql - 在 COMMENT ON TABLE 中放置时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37486564/