|
|
|
@ -9,7 +9,45 @@ |
|
|
|
|
#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 */ |
|
|
|
|