# F.38.spi

F.38.1.refint-用于实现引用完整性的函数F.38.2.autoinc-用于自动递增字段的函数F.38.3.插入_用户名-用于跟踪更改表的用户的函数F.38.4.moddatetime-用于跟踪上次修改时间的函数

spi模块提供了几个使用服务器编程接口(SPI)和触发器。虽然这些函数本身有一些价值,但它们作为示例更有用,可以根据自己的目的进行修改。这些函数足够通用,可以用于任何表,但在创建触发器时必须指定表名和字段名(如下所述)。

下面描述的每一组功能都是作为可单独安装的扩展提供的。

# F.38.1.refint-用于实现引用完整性的函数

检查主钥匙()检查外键()用于检查外键约束。(当然,这个功能早已被内置外键机制所取代,但作为一个例子,这个模块仍然很有用。)

检查主钥匙()检查引用表。要使用,请创建一个在插入或更新之前在引用另一个表的表上使用此函数触发。指定为触发器参数:引用表的列名(构成外键)、引用表名,以及引用表中的列名(构成主键/唯一键)。要处理多个外键,请为每个引用创建一个触发器。

检查外键()检查引用的表。要使用,请创建一个在删除或更新之前在其他表引用的表上使用此函数触发。指定为触发器参数:函数必须为其执行检查的引用表的数量,如果找到引用键则执行的操作(大量-要删除引用行,限制-要在存在引用键时中止事务,空栈-要将引用键字段设置为null),则触发表的列名(构成主键/唯一键),然后是引用表名和列名(对于第一个参数指定的引用表的数量重复)。请注意,主键/唯一键列应标记为NOTNULL,并应具有唯一索引。

这里有一些例子再加注。实例.

# F.38.2.autoinc-用于自动递增字段的函数

汽车公司是将序列的下一个值存储到整数字段中的触发器。这与内置的“串行列”功能有些重叠,但不同之处在于:汽车公司将覆盖在插入期间替换不同字段值的尝试,并且也可以选择在更新期间使用它来增加字段。

要使用,请创建一个插入前(或可选)在插入或更新之前)使用此函数触发。指定两个触发器参数:要修改的整数列的名称,以及将提供值的序列对象的名称。(实际上,如果要更新多个自动递增列,可以指定任意数量的此类名称对。)

这里有一个例子汽车公司。实例.

# F.38.3.插入_用户名-用于跟踪更改表的用户的函数

插入_用户名()是将当前用户名存储到文本字段中的触发器。这对于跟踪上次修改表中特定行的人非常有用。

要使用,请创建一个插入前和/或使现代化使用此函数触发。指定一个触发器参数:要修改的文本列的名称。

这里有一个例子插入您的用户名。实例.

# F.38.4.moddatetime-用于跟踪上次修改时间的函数

moddatetime()是将当前时间存储到时间戳领域这对于跟踪表中特定行的上次修改时间非常有用。

要使用,请创建一个更新前使用此函数触发。指定一个触发器参数:要修改的列的名称。列的类型必须为时间戳带时区的时间戳.

这里有一个例子时间到了。实例.