'bigserial' 和 'serial8' 选项分别返回指定插入到了表内的最后的 SERIAL8 或 BIGSERIAL 值的单个整数。要确保有效的结果,请紧跟在插入 SERIAL8 或 BIGSERIAL 值的 INSERT 语句之后使用此选项。
EXEC SQL CREATE TABLE fst_tab (ordernum SERIAL8, partnum INT); EXEC SQL CREATE TABLE sec_tab (ordernum SERIAL8); EXEC SQL INSERT INTO fst_tab VALUES (0,1); EXEC SQL INSERT INTO fst_tab VALUES (0,4); EXEC SQL INSERT INTO fst_tab VALUES (0,6); EXEC SQL INSERT INTO sec_tab SELECT dbinfo('serial8') FROM fst_tab WHERE partnum = 6;
此示例将包含主键 SERIAL8 值的行插入到 fst_tab 表内,并使用 DBINFO 函数来将相同的 SERIAL8 值插入到 sec_tab 表内。DBINFO 函数返回的值是被插入到 fst_tab 内的最后一行的 SERIAL8 值。在随后行中的子查询包含 WHERE 子句,因此返回单个值。
SQLCA 结构不记录由触发器插入的 serial 值。您不可以 'bigserial' 选项调用 DBINFO 函数来返回由表上的触发器的触发器活动直接地插入了的最近的 BIGSERIAL 值(视图上的 INSTEAD OF 触发器的也不可返回)。出于同样的原因,DBINFO ('serial8') 函数不可返回由表上的触发器插入了的 SERIAL8 值,由视图上的 INSTEAD OF 触发器也不可返回。