【发布时间】:2023-03-03 17:13:01
【问题描述】:
我正在 Postgres 中编写一个 PLPGSQL 触发器,我想检测更新语句中是否提供了一个列。我有一个用户 ID,我想用它来跟踪更改。问题是,如果 user_id 已经在我要更新的记录中并且 UPDATE SQL 不提供 user_id,则使用旧的 user_id。我想检测请求是否没有在更新中提供 user_id 以引发异常。 这是否可以在触发器中实现,还是我需要确保始终在所有请求中添加 user_id?
例如,这应该抛出一个异常:
UPDATE table SET field1 = 'test' WHERE id=1
这应该完全运行触发器,因为用户 ID 在更新中:
UPDATE table SET field1 = 'test',user_id = 2 WHERE id=1
我正在实施审计并希望确保 user_id 始终是请求的一部分。
谢谢
【问题讨论】:
-
请发布您期望的示例输入和输出数据。
-
例如:这应该引发异常
UPDATE table SET field1 = 'test' WHERE id=1这应该完全运行触发器,因为用户 ID 在更新中UPDATE table SET field1 = 'test',user_id = 2 WHERE id=1` 我正在实施审计和希望确保 user_id 始终是请求的一部分。
标签: postgresql triggers plpgsql