我有我的代码,并希望在SQL中返回当前时间(我使用postgres)。
procedure = PGFunction(
schema="public",
signature="in_out(_profile_id integer, _item_id integer, _channel_id integer, _allowed Boolean, _source_datetime timestamp)",
definition="""
RETURNS boolean
LANGUAGE sql AS $$
INSERT INTO local_cache(profile_id, item_id, channel_id, source_datetime)
VALUES(_profile_id, _item_id, _channel_id, _source_datetime)
ON CONFLICT ON CONSTRAINT local_cache_pkey
DO UPDATE local_cache
SET source_datetime = CURRENT_TIMESTAMP??
WHERE _source_datetime > source_datetime
AND profile_id = _profile_id
AND item_id = _item_id
AND channel_id = _channel_id
$$;"""
)
是"CURRENT_TIMESTAMP"吗?另外,如何在SQL中返回行计数,显示有多少行受到此存储过程执行的影响(有多少行被更新,有多少行未更新)?我不确定我是否应该使用SELECT COUNT(*)它会相当慢
如果需要数据库事务开始时的时间戳,则使用current_timestamp
。该函数对数据库事务中的所有调用返回相同的值。
如果您想要当前系统时钟时间戳,使用clock_timestamp()
。