postgresql 触发器记录执行的sql
时间: 2024-09-29 10:14:14 浏览: 39
PostgreSQL触发器是一种特殊类型的存储过程,它们会在特定的数据更改事件发生时自动执行。触发器可以用来记录对数据库表的SQL操作,包括INSERT、UPDATE、DELETE等操作。当你创建一个触发器时,通常会指定当满足某个条件时应该执行的操作,这通常包括插入一条新的记录到另一个表,用于审计或日志目的。
在创建触发器时,你可以使用`TG_EVENT`列来指定触发何时被激活,而`TG_COMMAND`列可以帮助判断是哪种SQL命令触发了触发器。例如,你可以设置一个BEFORE INSERT触发器,当数据插入新行时,记录相应的INSERT SQL到历史记录表中。
这是一个简单的示例:
```sql
CREATE OR REPLACE FUNCTION log_insert_trigger() RETURNS TRIGGER AS $$
BEGIN
INSERT INTO audit_log (action, old_row, new_row)
VALUES ('INSERT', NULL, NEW);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trig_after_insert
AFTER INSERT ON your_table
FOR EACH ROW
EXECUTE FUNCTION log_insert_trigger();
```
在这个例子中,每当在`your_table`上执行INSERT操作,`log_insert_trigger`函数就会被执行,并将操作信息插入到`audit_log`表中。
阅读全文