将时间戳放在 COMMENT ON TABLE 中

Posted

技术标签:

【中文标题】将时间戳放在 COMMENT ON TABLE 中【英文标题】:Putting timestamp in a COMMENT ON TABLE 【发布时间】:2016-05-27 14:54:08 【问题描述】:

我经常在 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

如何将当前的“日期和时间”标记到表格的评论中?

【问题讨论】:

【参考方案1】:

您必须以动态 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$;

【讨论】:

谢谢。对于我的想法来说,这有点笨拙,就像在太多行中一样。这会使我的 SQL 脚本变得非常混乱。但现在我知道该怎么做了。

以上是关于将时间戳放在 COMMENT ON TABLE 中的主要内容,如果未能解决你的问题,请参考以下文章

在 react-table 中显示布尔值和时间戳值:React Table+ React+Typescript

如何使mysql在每次修改行操作时自动将列更新为当前时间戳?

将具有当前时间戳的列添加到 Hive 中的表

Firestore 将具有服务器时间戳的对象附加到数组(字段类型)

PowerDesigner 逆向中 Name和Comment互换

将默认时间戳添加到雪花中的表