/*------------------------------------------------------------------------- * * trigger.h-- * prototypes for trigger.c. * * *------------------------------------------------------------------------- */ #ifndef TRIGGER_H #define TRIGGER_H #include "access/tupdesc.h" #include "access/htup.h" #include "utils/rel.h" typedef uint32 TriggerAction; #define TRIGGER_ACTION_INSERT 0x00000000 #define TRIGGER_ACTION_DELETE 0x00000001 #define TRIGGER_ACTION_UPDATE 0x00000010 #define TRIGGER_ACTION_OPMASK 0x00000011 #define TRIGGER_ACTION_ROW 4 #define TRIGGER_FIRED_BY_INSERT (action) \ (((TriggerAction) action & TRIGGER_ACTION_OPMASK) == \ TRIGGER_ACTION_INSERT) #define TRIGGER_FIRED_BY_DELETE (action) \ (((TriggerAction) action & TRIGGER_ACTION_OPMASK) == \ TRIGGER_ACTION_DELETE) #define TRIGGER_FIRED_BY_UPDATE (action) \ (((TriggerAction) action & TRIGGER_ACTION_OPMASK) == \ TRIGGER_ACTION_UPDATE) #define TRIGGER_FIRED_FOR_ROW (action) \ ((TriggerAction) action & TRIGGER_ACTION_ROW) #define TRIGGER_FIRED_FOR_STATEMENT (action) \ (!TRIGGER_FIRED_FOR_ROW (action)) extern void CreateTrigger (CreateTrigStmt *stmt); extern void DropTrigger (DropTrigStmt *stmt); extern HeapTuple ExecBRInsertTriggers (Relation rel, HeapTuple tuple); extern void ExecARInsertTriggers (Relation rel, HeapTuple tuple); extern bool ExecBRDeleteTriggers (Relation rel, ItemPointer tupleid); extern void ExecARDeleteTriggers (Relation rel, ItemPointer tupleid); extern HeapTuple ExecBRUpdateTriggers (Relation rel, ItemPointer tupleid, HeapTuple tuple); extern void ExecARUpdateTriggers (Relation rel, ItemPointer tupleid, HeapTuple tuple); #endif /* TRIGGER_H */