interbase 中的generators(50分)

  • 主题发起人 主题发起人 zhouzhilu
  • 开始时间 开始时间
Z

zhouzhilu

Unregistered / Unconfirmed
GUEST, unregistred user!
请问INTERBASE中数据库定义中的generators是什么意思?什么情况下用到该定义,究竟有什么用处呢?
说是和表的关键字有关,还是不太懂。请指教!
 
GENERATOR是生成器,一般用于字段数值的自动增加(因为INTERBASE没有类似PARADOX的自
动增量字段)。
 
GENERATOR一般用在触发器中
 
这个东西好象不是太好用。
 
用于字段的增加,那我在定义表的时候,怎么用它呢?
 
定义表时不需要的。用在触发器中啊。如

create GENERATOR BBB;

Create table AAA
(
a integer not null primary key,
b varchar(20)
);

create trigger binsaaa for aaa
before insert
as
begin
new.a=gen_id(aaa,1);
end;

这样,当执行insert into AAA(b) values ('Interbase')时,字段a将自动增量
 
触发器我也不懂
 
生成器是一种当诸如INSERT,UPDATE等SQL数据处理操作发生时自动向某个字段插入一个
不重复的,连续数值的机构。生成器通常被用做向主关键字段插入不重复的数值(如生
成不重复的发票编号等)。在一个数据库中可以定义任意多个生成器,只要生成器的名
字不重复。
定义生成器的语法:
CREATE GENERATOR name;
例子:
CREATE GENERATOR EMPNO_GEN;
一旦生成器被定义后不能删除。
修改生成器(起始值)的语法:
SET GENERATOR name TO int;
例子:
SET GENERATOR EMPNO_GEN TO 1000;
除非你确认不会发生数值重复的错误,否则不要修改生成器。
在创建生成器后,数据定义语句只是使得数据库知道具有特定数值的生成器,但还没有数
据生成。你必须引用函数GEN_ID()来使用生成器。
使用生成器的语法:
GEN_ID(genname, step); // step为步长,即加减尺度
例子:
INSERT INTO SALES(PO_NUMBER) VALUES(GEN_ID(g, 1));

参考自INTERBASE DATA DEFINITION GUIDE
 
多人接受答案了。
 
后退
顶部