我在哪里可以找到有关 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/