trigger.h 2.13 KB
Newer Older
1 2 3
/*-------------------------------------------------------------------------
 *
 * trigger.h--
4
 *	  prototypes for trigger.c.
5 6 7 8 9 10 11
 *
 *
 *-------------------------------------------------------------------------
 */
#ifndef TRIGGER_H
#define TRIGGER_H

Vadim B. Mikheev's avatar
Vadim B. Mikheev committed
12 13 14 15
#include "access/tupdesc.h"
#include "access/htup.h"
#include "utils/rel.h"

16
typedef uint32 TriggerEvent;
Vadim B. Mikheev's avatar
Vadim B. Mikheev committed
17

18 19
typedef struct TriggerData
{
20 21 22 23 24
	TriggerEvent tg_event;
	Relation	tg_relation;
	HeapTuple	tg_trigtuple;
	HeapTuple	tg_newtuple;
	Trigger    *tg_trigger;
Vadim B. Mikheev's avatar
Vadim B. Mikheev committed
25
}			TriggerData;
Vadim B. Mikheev's avatar
Vadim B. Mikheev committed
26

27
extern TriggerData *CurrentTriggerData;
Vadim B. Mikheev's avatar
Vadim B. Mikheev committed
28

29 30 31 32 33 34
#define TRIGGER_EVENT_INSERT			0x00000000
#define TRIGGER_EVENT_DELETE			0x00000001
#define TRIGGER_EVENT_UPDATE			0x00000002
#define TRIGGER_EVENT_OPMASK			0x00000003
#define TRIGGER_EVENT_ROW				0x00000004
#define TRIGGER_EVENT_BEFORE			0x00000008
Vadim B. Mikheev's avatar
Vadim B. Mikheev committed
35

36
#define TRIGGER_FIRED_BY_INSERT(event)	\
37 38
		(((TriggerEvent) (event) & TRIGGER_EVENT_OPMASK) == \
												TRIGGER_EVENT_INSERT)
Vadim B. Mikheev's avatar
Vadim B. Mikheev committed
39

40
#define TRIGGER_FIRED_BY_DELETE(event)	\
41 42
		(((TriggerEvent) (event) & TRIGGER_EVENT_OPMASK) == \
												TRIGGER_EVENT_DELETE)
Vadim B. Mikheev's avatar
Vadim B. Mikheev committed
43

44
#define TRIGGER_FIRED_BY_UPDATE(event)	\
45 46
		(((TriggerEvent) (event) & TRIGGER_EVENT_OPMASK) == \
												TRIGGER_EVENT_UPDATE)
47

48 49
#define TRIGGER_FIRED_FOR_ROW(event)			\
		((TriggerEvent) (event) & TRIGGER_EVENT_ROW)
50

51 52
#define TRIGGER_FIRED_FOR_STATEMENT(event)		\
		(!TRIGGER_FIRED_FOR_ROW (event))
53

54 55
#define TRIGGER_FIRED_BEFORE(event)				\
		((TriggerEvent) (event) & TRIGGER_EVENT_BEFORE)
56

57 58
#define TRIGGER_FIRED_AFTER(event)				\
		(!TRIGGER_FIRED_BEFORE (event))
Vadim B. Mikheev's avatar
Vadim B. Mikheev committed
59 60


Vadim B. Mikheev's avatar
Vadim B. Mikheev committed
61 62
extern void CreateTrigger(CreateTrigStmt * stmt);
extern void DropTrigger(DropTrigStmt * stmt);
63
extern void RelationRemoveTriggers(Relation rel);
64

65
extern HeapTuple ExecBRInsertTriggers(Relation rel, HeapTuple tuple);
66 67 68
extern void ExecARInsertTriggers(Relation rel, HeapTuple tuple);
extern bool ExecBRDeleteTriggers(Relation rel, ItemPointer tupleid);
extern void ExecARDeleteTriggers(Relation rel, ItemPointer tupleid);
69
extern HeapTuple ExecBRUpdateTriggers(Relation rel, ItemPointer tupleid, HeapTuple tuple);
70
extern void ExecARUpdateTriggers(Relation rel, ItemPointer tupleid, HeapTuple tuple);
Vadim B. Mikheev's avatar
Vadim B. Mikheev committed
71

72
#endif							/* TRIGGER_H */