postgresql - Postgres pg_trigger 的触发器类型字段(tgtype)中位的含义

标签 postgresql triggers

我在哪里可以找到有关 POSTGRES tgtype 位的文档,例如:

SELECT * FROM pg_trigger;
===>
 tgtype = 23; 

这是什么意思?

最佳答案

tgtype 是 ( per documentation ):

Bit mask identifying trigger firing conditions

但是那里没有识别出个别位。
source code says :

41  int16  tgtype;  /* BEFORE/AFTER/INSTEAD, UPDATE/DELETE/INSERT,
42                                   * ROW/STATEMENT; see below */

...

93  /* Bits within tgtype */
94  #define TRIGGER_TYPE_ROW         (1 << 0)
95  #define TRIGGER_TYPE_BEFORE      (1 << 1)
96  #define TRIGGER_TYPE_INSERT      (1 << 2)
97  #define TRIGGER_TYPE_DELETE      (1 << 3)
98  #define TRIGGER_TYPE_UPDATE      (1 << 4)
99  #define TRIGGER_TYPE_TRUNCATE    (1 << 5)
100 #define TRIGGER_TYPE_INSTEAD     (1 << 6)
101
102 #define TRIGGER_TYPE_LEVEL_MASK  (TRIGGER_TYPE_ROW)
103 #define TRIGGER_TYPE_STATEMENT   0

23 转换为 00010111 最低有效 8 位,应该代表:

CREATE TRIGGER trigger_name
BEFORE INSERT OR UPDATE ON table_name
FOR EACH ROW
EXECUTE PROCEDURE func_name();

在我现有的数据库中进行的一些快速测试似乎证实了这一点。

关于postgresql - Postgres pg_trigger 的触发器类型字段(tgtype)中位的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23634550/

相关文章:

sql - 在 SQL 编码中可以在 TRIGGER 中使用 DEFERRABLE 吗? DEFERRABLE 是如何工作的?

MySQL 在插入前触发时更改类型

javascript - 如何将参数传递给基于时间的 Google App Script 触发器?

sql - 如何在 PostgreSQL 9.5 中为 "int"数据类型设置大小限制

python - 如何为 SQLALCHEMY 配置找到 postgresql uri

python - 在 PL/Python 函数之间重用纯 Python 函数

triggers - 如何在zabbix中查看HTTP响应码?

ruby-on-rails - 使用 ransacker 对整数 to_char 进行洗劫

PostgreSQL:在表中存储连接的 IP 地址

python - 如果 SFTP 服务器触发在上传时自动移动文件,Paramiko put 方法会抛出 "[Errno 2] File not found"