本人刚学,写了一段代码,但是不好使,请大家给指点一下.
这个触发器是判断表里有没有相同编号数据的,用于多人同时添加数据.如果表里有值,把编号加一后再添加,字段太多,只先写了两个,代码如下:
CREATE TRIGGER f_kaisha_info_add//触发器名
AFTER insert ON f_kaisha_info //表名
FOR insert //添加方法
as
declare @KAISHAID
declare @count
set @KAISHAID=(select KAISHAID from inserted)
select @count=count(*) from f_kaisha_info where KAISHAID=@KAISHAID
if @count=0 then
insert into f_kaisha_info(KAISHAID,KAISHANAME)select KAISHAID,KAISHANAME from inserted
else
set @KAISHAID=(select substr(MAX(KAISHAID),4) from f_kaisha_info)
set @a=@KAISHAID+1;
set @b=CIN
set @KAISHAID=$b.str_pad($a,7,"0",str_pad_left)
insert into f_kaisha_info(KAISHAID,KAISHANAME)@KAISHAID
select KAISHANAME from inserted
endif
编号名是指定的,例"CIN0000001"
第一次用这东西,在mysql里创建不了,有错误,有图片,请高手们帮帮忙.
可是,
set @KAISHAID=(select KAISHAID from inserted)
select @count=count(*) from f_kaisha_info where KAISHAID=@KAISHAID
if @count=0 then
insert into f_kaisha_info(KAISHAID,KAISHANAME)select KAISHAID,KAISHANAME from inserted
这个部分不是多余吗? 竟然已经都插入了,为什么还要判断有没有这个Kaishaid ????????
而且, 这个触发器怎么停啊?
你插入了1条记录, 然后触发器当然会发现已经有了这个kaishaid,
就会+1 然后用一样的名字再存一个, 存的同时又会运行触发器,
不就是无限循环了?
触发器这个东西很敏感的。
这个触发器是不是应该写成before insert?