spi模块提供了多个可工作的使用服务器编程接口 (SPI) 和触发器的例子。尽管这些例子的价值只对它们自己合适,它们甚至更有助于作为例子来修改达到你自己的目的。这些函数足够普通,可以与任何表一起使用,但是在创建一个触发器时你必须指定表名和域名(如下所述) 。
下面描述的函数组中的每一个都作为一个独立可安装的扩展被提供。
check_primary_key()
和check_foreign_key()
被用来检查外键约束(当然,这个功能很早以前被内建的外建机制取代了,但是该模块还是可以用作一个例子)。
check_primary_key()
检查引用表。用法是使用这个函数在一个引用其他表的表上创建一个BEFORE INSERT OR UPDATE
触发器。指定该触发器的参数为:引用表中构成外键的列名、被引用表名称以及在被引用表中构成主键/唯一键的列名。要处理多个外键,请为每一个引用创建一个触发器。
check_foreign_key()
检查被引用表。用法是使用这个函数在一个被其他表引用的表上创建一个BEFORE DELETE OR UPDATE
触发器。指定该触发器的参数为:该函数必须对其执行检查的引用表数量、找到一个引用键后的动作(cascade
— 删除引用行,restrict
—
如果引用键存在则中断事务,setnull
— 设置引用键域为空)、触发器所在表中构成主键/唯一键的列名、引用表名称和列名称(第一个参数指定多少个引用表就重复多少次)。注意主键/唯一键列应该被标记为 NOT NULL 并且应该有一个唯一索引。
refint.example
中有一些例子。
autoinc()
是一个将序列的下一个值存储到一个整数域的触发器。这和内建的“序数列”特性有些重叠,但是它并不完全一样:autoinc()
在插入时会覆盖掉给出的不同域值,并且它可被选择用来在更新时增加域。
用法是使用这个函数创建一个BEFORE INSERT
(或者BEFORE INSERT OR UPDATE
)触发器。指定两个触发器参数:要被修改的整数列名和将提供值的序列对象名(事实上,如果你想要更新多于一个自增列,你可以指定任意数量的这种名称对)。
在autoinc.example
中有一个例子。
insert_username()
是存储当前用户名到一个文本域的触发器。这有助于跟踪是谁最后在一个表中修改了一个特定行。
用法是使用这个函数创建一个BEFORE INSERT
以及/或者UPDATE
触发器。指定一个触发器参数:要被修改的文本列名。
在insert_username.example
中有一个例子。
moddatetime()
是一个存储当前时间到一个timestamp
域的触发器。它有助于跟踪一个表中特定行最后一次的修改时间。
用法是使用这个函数创建一个BEFORE UPDATE
触发器。指定一个触发器参数:要被修改的列名。该列必须是类型timestamp
或者timestamp with time zone
。
在moddatetime.example
中有一个例子。
SQL SELECT TOP 子句SQL SELECT TOP 子句 SELECT TOP 子句用于规定要返回的记录的数目。 SELECT TOP 子句对于拥有数千条记录...
SQL INSERT INTO SELECT 语句通过 SQL,您可以从一个表复制信息到另一个表。 INSERT INTO SELECT 语句从一个表复制数据,然...
SQL RIGHT JOIN 关键字SQL RIGHT JOIN 关键字 RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。...
SQL NULL 函数SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数 请看下面的 "Products" 表: P_Id ProductName UnitPrice Unit...
SQL Server DATEADD() 函数 SQL Server Date 函数定义和用法 DATEADD() 函数在日期中添加或减去指定的时间间隔。 语法DATEADD(da...
SQL HAVING 子句HAVING 子句 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与 Aggregate 函数一起使用。 ...
我们知道从MySQL表中使用SQL SELECT 语句来读取数据。如果我们需要对读取的数据进行排序,我们就可以使用MySQL的 ORDER BY ...
DROP PROCEDURE IF EXISTS FillDateTable;delimiter //CREATE PROCEDURE FillDateTable()LANGUAGE SQLNOT DETERMINISTICCONTAINS...
创建MySQL数据表需要以下信息:表名表字段名定义每个表字段 语法 以下为创建MySQL数据表的SQL通用语法: CREATE TABLE table_nam...