- 类别:
系统函数 (系统信息)
SYSTEM$LAST_CHANGE_COMMIT_TIME¶
返回一个令牌,它可用于检测数据库表或视图在两次调用该函数之间是否发生了变化。如果调用返回的令牌与单独调用返回的令牌不同,则两次调用之间的表或视图会发生变化,这通常是由于 DML 操作(例如 INSERT)引起的。
如果指定的数据库对象是视图,则该视图引用的至少一个数据库对象已更改。
该函数必须作为系统函数调用(即 SYSTEM$LAST_CHANGE_COMMIT_TIME
)。
语法¶
SYSTEM$LAST_CHANGE_COMMIT_TIME( '<object_name>' )
实参¶
object_name
指定表或视图。
返回¶
返回值的数据类型是小数位数为 0 的 NUMBER。
使用说明¶
该值可用于 BI 工具等应用程序中,以确定基础表数据是否已更改。这对于显示仪表板并需要确定是否需要根据表中的新数据更新仪表板的应用程序非常有用。
对于对指定视图中的指定表或基础表执行的每个 DML 操作,返回值都会增加。
该函数返回的值通常是数据库对象上次更改时间的 近似值,表示为自纪元开始以来(即自 1970 年 1 月 1 日午夜以来)以纳秒为单位的 UTC 时间戳。但是,这些值只是近似值,部分原因是结果的精度和偏差可能会有所不同。
备注
Snowflake 建议仅将此值用作更改指示器,并强烈建议用户不要将此值视为时间戳。
示例¶
CALL SYSTEM$LAST_CHANGE_COMMIT_TIME('mytable');
+--------------------------------+
| SYSTEM$LAST_CHANGE_COMMIT_TIME |
|--------------------------------|
| 1661920053987000000 |
+--------------------------------+
SELECT SYSTEM$LAST_CHANGE_COMMIT_TIME('mytable');
+--------------------------------+
| SYSTEM$LAST_CHANGE_COMMIT_TIME |
|--------------------------------|
| 1661920118648000000 |
+--------------------------------+
INSERT INTO mytable VALUES (2,100), (3,300);
SELECT SYSTEM$LAST_CHANGE_COMMIT_TIME('mytable');
+--------------------------------+
| SYSTEM$LAST_CHANGE_COMMIT_TIME |
|--------------------------------|
| 1661920131893000000 |
+--------------------------------+