问题的产生:
小弟在自学delphi5开发人员指南的时候,第33章,做货物管理系统的时候
遇到了棘手的问题,关于生成器生成器能自动生成序号插入到表中,通常为表中的主键生成一个唯一的编号。SALES数据库就用
生成器为表CUSTOMER、SALES和ITEMS表生成一个新的客户编号,这些生成器是这样定义的:
creat generator gen_custid;
creat generator gen_itemno;
creat generator gen_saleno;
如果用触发器来代替就是
creat trigger Tcustomer_id for customer
active before insert position 0
as begin
new.customer_id=gen_id(gen_custid,1)
end
item表
creat trigger Titem_no for items
active before insert position 0
as begin
new.item_no=gen_id(gen_itemno,1)
end问题
1,上面解释的是生成器到底是一开始就生成一个新编号,还是我自己增加一行数据了在自动生成新
(就是第2个)编号,如果是第一种情况,如何控制那个新编号(比如说是多少位,上面开头之类的)
,如果是第2种,那就是说还是要自己写第一个编号?
2, 用触发器来代替的时候,希望有那个大哥帮我解释这个触发器的意思,因为从触发器的意思可以
看出我的第一个问题的答案,还有就是解释before,gen_id的意思,那个gen_id好像是个函数,呵呵
我也不懂
3, 我想把这个触发器用MSQL来写,谢谢大哥给出MSQL的写法,还有解释,
小弟在自学delphi5开发人员指南的时候,第33章,做货物管理系统的时候
遇到了棘手的问题,关于生成器生成器能自动生成序号插入到表中,通常为表中的主键生成一个唯一的编号。SALES数据库就用
生成器为表CUSTOMER、SALES和ITEMS表生成一个新的客户编号,这些生成器是这样定义的:
creat generator gen_custid;
creat generator gen_itemno;
creat generator gen_saleno;
如果用触发器来代替就是
creat trigger Tcustomer_id for customer
active before insert position 0
as begin
new.customer_id=gen_id(gen_custid,1)
end
item表
creat trigger Titem_no for items
active before insert position 0
as begin
new.item_no=gen_id(gen_itemno,1)
end问题
1,上面解释的是生成器到底是一开始就生成一个新编号,还是我自己增加一行数据了在自动生成新
(就是第2个)编号,如果是第一种情况,如何控制那个新编号(比如说是多少位,上面开头之类的)
,如果是第2种,那就是说还是要自己写第一个编号?
2, 用触发器来代替的时候,希望有那个大哥帮我解释这个触发器的意思,因为从触发器的意思可以
看出我的第一个问题的答案,还有就是解释before,gen_id的意思,那个gen_id好像是个函数,呵呵
我也不懂
3, 我想把这个触发器用MSQL来写,谢谢大哥给出MSQL的写法,还有解释,
解决方案 »
- 这样的功能能实现吗?
- 关于三层开发的基础问题,帮看下这个错误是什么问题 50分
- 急!!急!!急!!寻求API函数,如何判断某一个文件夹下是否有文件?
- 日符串转变成日期的函数是什么?
- 我想用存储过程把两个字段相减,然后把值放在另外一个字段,请问怎么做?
- 请问哪里有现成的xp风格的菜单控件??
- 大虾帮忙!在edit控件中录入了50个字符,可是保存后就截成20个字符了?
- 有谁知道delphi在单步运行中不能Watch窗口不能显示其变量值,这是为什么??(内空)
- 江湖兵器大比拼:统计大家公认的最好的帮助文件(.hlp or .chm)制作工具和安装工具!!!!!!
- 莫意思,问个关于sql语句的简单问题?
- 扫描仪能否把所扫描的文字转化成文本呢?
- 请问大家都是用什么工具制作安装程序的啊。(散分)
每种SQL server都有自己的特色, 请叁看MS SQL的论坛有关自动增加的字段. Interbase的stored procedure/trigger相信是最简单易写的, 所以当你转用其他的, 便要有准备花点时间来学习不同sql server结构和使用的分别.2). :
你可以理解trigger为自动执行的stored procedure. 而语句中的'active before insert postion 0'就是要确定该trigger, 相对於其他的trigger要执行的时间和先後次序.gen_id 是ib/fb内建函数来呼叫指定的加数器. 因为是和现行中的sql事务是分开的, 所以其产生的数字和该事务是独立的.