触发器函数可以使用大部分可用过程性语言,包括 PL/pgSQL、 PL/Tcl、 PL/Perl和 PL/Python。触发器是数据库提供给程序员和数据分析员来保证数据完整性的一种机制,它是一种与数据表事件相关的特殊的存储过程。触发器的执行不是由程序调用,也不需要手工开启,而是由数据表上的事件来触发,当用户对一个数据表进行增、删、改操作时就会激活它执行。
一个触发器声明了当执行一种特定类型的操作时数据库应该自动执行一个特殊的函数。触发器可以被附加到表(分区或不分区)、视图和外部表。
在表和外部表上,触发器可以被定义为在 INSERT、UPDATE或 DELETE操作之前或之后被执行, 可以为每个SQL语句被执行一次或者为每个修改的行被执行一次。UPDATE 触发器可以进一步地设置为只针对UPDATE 语句的SET子句的特定列出发。触发器也可以被 TRUNCATE语句触发。如果一个触发器事件发生,触发器函数会在适当的事件被调用来处理该事件。
在视图上,触发器可以被定义来取代INSERT、UPDATE或 DELETE操作的执行。INSTEAD OF触发器对视图中需要被修改的每一行触发一次。触发器函数的职责是对底层的基本表执行必要的修改,并且在合适的时候返回被修改的行以便显示在视图中。视图上的触发器也可以被定义为对每个SQL语句执行一次,在INSERT\UPDATE或DELETE操作之前或之后。
触发器函数必须在触发器本身被创建之前被定义好。触发器函数必须被定义成一个没有参数的函数,并且返回类型为trigger(触发器函数通过一个特殊传递的TriggerData结构作为其输入,而不是以普通函数参数的形式)。
一旦一个合适的触发器函数被创建,就可以使用CREATE TRIGGER建立触发器。同一个触发器函数可以被用于多个触发器。