表zybh结构:工号   员工姓名  级别
           1      张三      系统
           2      李四      一般zybh上的触发器(update):
if @old_jb='系统'
   rollback transaction
else
....当前语句:
update zybh set 级别='一般' where 员工姓名='张三'
执行后,显示:查询完成
经检查,数据并没有修改,如何让客户端得知修改是否成功呢?恳请指教!!!

解决方案 »

  1.   

    drop table A
    GO
    create table A
    (
    UserID int ,
            UserName varchar(100),
    FlagName varchar(20)
    )
    go
    insert into A select  1 ,'张三','系统'
    GO
    insert into A select  2 ,'李四','一般'GO
    SELECT * FROM Ago
    drop trigger trigA 
    go
    create trigger trigA ON A
    FOR UPDATE
    AS
          update A set FlagName='系统' where UserID in (select UserID from deleted where FlagName='系统')
    update A set FlagName='一般' where UserName='张三'
    SELECT * FROM A
      

  2.   

    是系统属性的都回滚了。  最好判断一下:
    if update([级别])
    ...
    --如果修改的是级别列。
      

  3.   

    create table zybh ("工号" int,"员工姓名" varchar(10),"级别" varchar(10))insert zybh select 1,'张三','系统'
    union all select 2,'李四','一般'if exists (select name from sysobjects where name='trig_update_zybh')
    drop trigger trig_update_zybh
    create trigger trig_update_zybh
    on zybh
    for update
    as
    if update("级别")
    begin
    print '修改成功!修改的信息后的信息为:'
    select * from zybh
    end
    else
    print '修改失败!'update zybh set 级别='一般' where 员工姓名='张三'
      

  4.   

    回复人:liangpei2008(笑青天) () 信誉:100 
    用前端的程序来捕获数据库发来的信息就可以了 我已经有一个方法可将信息发到客户端,这个问题基本解决了,但我想知道如何笑青天兄弟所说的'用前端的程序来捕获数据库发来的信息就可以了 '的具体方法,请指教!
      

  5.   

    to s_hluo(笨笨熊) 这个方法有点拙,试验后还能解决触发器无返回参数据问题,给您个思路供您参考:如果UPDATE或DELETE 失败,返回值小于0,说明触发器本身设计有问题
    如果成功,有两种情况,一种是真的成功了,一种是没真的成功(服务器捕捉后进行了回液),对成功的情况返回一个临时表到前台,信息就写在这个表上,检查这个表就可以了;这样做在前台需要做一些书写规则
      

  6.   

    SQL语句返回结果集
    应用程序利用ADO获得数据集结果
    根据结果输出提示信息给用户SQL语句中
    if update("级别")
    begin
    select 1
    --select * from zybh
    end
    else
             select 0
      

  7.   

    用raiserror返回错误if @old_jb='系统'
    begin
      rollback transaction
      raiseerror('出错',16,1)
      return
    end
    else
      

  8.   

    zybh上的触发器(update):
    if @old_jb='系统'
    rollback transaction
    else
    ....
    这个代码贴出来,估计是这个触发器中的rollback transaction回滚了update