Sybase SQL Anywhere Server表1
Create Table GFT_YHGEDA_TEMP
(
I_LIUSHUIH int Not NULL default autoincrement,
--ID
C_GEBIANHAO char(7),
--个表编号
C_BIAOHAO varchar(10),
--出厂编号
C_BIAOXH varchar(20),
--表型号
C_BIAOCD varchar(20),
--表生产厂家
C_BIAOCCRQ varchar(10),
--表出厂日期
C_YONGHUQX varchar(20),
--个表所在区县
C_STATE char check (C_STATE in ('0','1')),
--标记,0指新增,1指删除;对删除来说,有意义的仅有C_GEBIANHAO、C_STATE
primary key (I_LIUSHUIH)
)表2
Create Table GFT_BiaoDetail
(
c_Gebianhao char(7) not null,
c_no char(4),
--编号
primary key (c_Gebianhao),
)create table gft_ranqibiao
(
c_no char(4),
--编号
c_biaojg varchar(20),
--表结构
c_biaogg varchar(20),
--表规格
i_biaows integer,
--表位数
c_biaoll varchar(20),
--表流量
c_biaoxh varchar(20),
--表型号
c_biaocd varchar(20),
--表产地
--c_biaosxh varchar(20),
--二次仪表型号
--c_biaosbh varchar(20),
--二次仪表编号
primary key (c_no),
--每一记录对应一种表,表型号与生产厂家确定一种表
)
alter trigger wei.tia_gft_yhgeda_temp after insert on
wei.GFT_YHGEDA_TEMP
referencing new as new_ins
for each row
begin
  if new_ins.c_state = 0 then
    select c_no from GFT_RANQIBIAO where c_biaoxh = new_ins.c_biaoxh and c_biaocd = new_ins.c_biaocd;
    insert into GFT_biaodetail values(new_ins.c_gebianhao,GFT_RANQIBIAO.c_no)
  end if
end请问在向GFT_YHGEDA_TEMP中加入数据时
insert into gft_yhgeda_temp (c_gebianhao,c_biaoxh,c_biaocd,c_state) values ('9999901','LUXZ-20B','天信',0)
为什么会报错
“Illegal cursor operation attempt”?
去掉对应GFT_YHGEDA_TEMP的触发器就没问题了,我知道问题肯定是出在触发器代码上,请各位大虾帮看一下

解决方案 »

  1.   

    终于看到有人用Sybase数据库的人,可惜这各问题我不会
      

  2.   

    --解决了,代码如下,请哪位高手给解释一下为何这样就可以了,而上面的就不行
    alter trigger wei.tia_gft_yhgeda_temp after insert on
    wei.GFT_YHGEDA_TEMP
    referencing new as new_i
    for each row begin
      if new_i.c_state = 0 then
        insert into GFT_BiaoDetail values(new_i.c_gebianhao,(select GFT_RANQIBIAO.c_no from GFT_RANQIBIAO where
            GFT_RANQIBIAO.c_biaoxh = new_i.c_biaoxh and GFT_RANQIBIAO.c_biaocd = new_i.c_biaocd))
      end if
    end