同时更新两张表的信息每张表更新1条 @@rowcount 返回2吗,  @@ERROR <> 0是指有错误吗

解决方案 »

  1.   

    @@rowcount 还是返回 1 或 0  不会返回2的@@ERROR = 0 表示没错误
      

  2.   


    @@ERROR
    Returns the error number for the last Transact-SQL statement executed.
    返回最后一个SQL查询的错误代码@@ROWCOUNT
    Returns the number of rows affected by the last statement.
    返回最后一个查询的受影响行数
      

  3.   

    IF  @@ERROR <> 0 or @@rowcount > 2
    begin 
      rollback tran addandup
    end 就是这个拉  我写>1  都改不了数据  
      

  4.   

    因为你每个表只更新1条记录, @@rowcount  肯定是1所以回滚了,肯定修改不了
      

  5.   

    那就说明@@rowcount这个已经大于1了, 当然改不了, 事务回滚了啊!
      

  6.   

    CREATE PROCEDURE sp_personal_userinfoUpdate09
    (
    @iUserRegId int
    ,@sUserTrueName varchar(50)
    ,@sNickName varchar(50)
    ,@sUserEmail varchar(50)
    ,@sMobile varchar(50)
    ,@sTel varchar(50)
    ,@sQq varchar(50)
    ,@sMsn varchar(50)
    ,@sBirthday varchar(50)
    ,@sRegion varchar(50)
    ,@sCity varchar(50)
    ,@sSelfIntro varchar(2000)
    ,@sWorkYn varchar(10)
    ,@sOpenInfoYn varchar(10)
    ,@sPhoto varchar(10)
    ,@iSex int
    ,@sSpecialty varchar(50)
    ,@sUserLoginName varchar(50)
    )
    WITH ENCRYPTION
    AS
    BEGIN
    begin tran addandup
        update tb_userRegInfo set fd_User_Name=@sUserTrueName,fd_nickName=@sNickName,fd_Email=@sUserEmail
        ,fd_mobile=@sMobile,fd_tel=@sTel,fd_qq=@sQq,fd_msn=@sMsn,fd_birthday=@sBirthday
        ,fd_region=@sRegion,fd_city=@sCity,fd_selfIntro=@sSelfIntro
        ,fd_workYn=@sWorkYn,fd_openInfoYn=@sOpenInfoYn,fd_photoFileName=@sPhoto
        ,fd_sex=@iSex,fd_Specialty=@sSpecialty
        where fd_userRegId=@iUserRegId;
        --同时修改学生表中的信息
        update tb_Users set fd_User_Name=@sUserTrueName,fd_nickName=@sNickName,fd_Email=@sUserEmail
        ,fd_mobile=@sMobile,fd_tel=@sTel,fd_qq=@sQq,fd_msn=@sMsn,fd_birthday=@sBirthday
        ,fd_region=@sRegion,fd_city=@sCity,fd_selfIntro=@sSelfIntro
        ,fd_workYn=@sWorkYn,fd_openInfoYn=@sOpenInfoYn,fd_photoFileName=@sPhoto
        ,fd_sex=@iSex,fd_Specialty=@sSpecialty
        where fd_Login_Name=@sUserLoginName
    commit tran addandup
    IF  @@ERROR <> 0 or @@rowcount > 1
    begin 
      rollback tran addandup
    end 
    END我这样写 它就给我回滚了
      

  7.   

    如果是更新一个表。可以用这样的结构 IF  @@ERROR <> 0 or @@rowcount > 2
    如果是2个表。用这个没得用
      

  8.   

    CREATE PROCEDURE sp_personal_userinfoUpdate09
    (
    @iUserRegId int
    ,@sUserTrueName varchar(50)
    ,@sNickName varchar(50)
    ,@sUserEmail varchar(50)
    ,@sMobile varchar(50)
    ,@sTel varchar(50)
    ,@sQq varchar(50)
    ,@sMsn varchar(50)
    ,@sBirthday varchar(50)
    ,@sRegion varchar(50)
    ,@sCity varchar(50)
    ,@sSelfIntro varchar(2000)
    ,@sWorkYn varchar(10)
    ,@sOpenInfoYn varchar(10)
    ,@sPhoto varchar(10)
    ,@iSex int
    ,@sSpecialty varchar(50)
    ,@sUserLoginName varchar(50)
    )
    WITH ENCRYPTION
    AS
    BEGIN
    begin tran addandup
        update tb_userRegInfo set fd_User_Name=@sUserTrueName,fd_nickName=@sNickName,fd_Email=@sUserEmail
        ,fd_mobile=@sMobile,fd_tel=@sTel,fd_qq=@sQq,fd_msn=@sMsn,fd_birthday=@sBirthday
        ,fd_region=@sRegion,fd_city=@sCity,fd_selfIntro=@sSelfIntro
        ,fd_workYn=@sWorkYn,fd_openInfoYn=@sOpenInfoYn,fd_photoFileName=@sPhoto
        ,fd_sex=@iSex,fd_Specialty=@sSpecialty
        where fd_userRegId=@iUserRegId;
        --同时修改学生表中的信息
        update tb_Users set fd_User_Name=@sUserTrueName,fd_nickName=@sNickName,fd_Email=@sUserEmail
        ,fd_mobile=@sMobile,fd_tel=@sTel,fd_qq=@sQq,fd_msn=@sMsn,fd_birthday=@sBirthday
        ,fd_region=@sRegion,fd_city=@sCity,fd_selfIntro=@sSelfIntro
        ,fd_workYn=@sWorkYn,fd_openInfoYn=@sOpenInfoYn,fd_photoFileName=@sPhoto
        ,fd_sex=@iSex,fd_Specialty=@sSpecialty
        where fd_Login_Name=@sUserLoginName
    commit tran addandup
    IF  @@ERROR <> 0 or @@rowcount > 2
    begin 
      rollback tran addandup
    end 
    END我现在是这样 可以修改
      

  9.   

    汗你都commit了,
    还怎么rollback啊。
      

  10.   


    沟沟说的对至少应该是IF  @@ERROR <> 0 or @@rowcount > 2
       begin 
          rollback tran addandup
       end 
    else
       commit tran addandup
      

  11.   

    update tb_userRegInfo set fd_User_Name=@sUserTrueName,fd_nickName=@sNickName,fd_Email=@sUserEmail
        ,fd_mobile=@sMobile,fd_tel=@sTel,fd_qq=@sQq,fd_msn=@sMsn,fd_birthday=@sBirthday
        ,fd_region=@sRegion,fd_city=@sCity,fd_selfIntro=@sSelfIntro
        ,fd_workYn=@sWorkYn,fd_openInfoYn=@sOpenInfoYn,fd_photoFileName=@sPhoto
        ,fd_sex=@iSex,fd_Specialty=@sSpecialty
        where fd_userRegId=@iUserRegId;
        --同时修改学生表中的信息
        update tb_Users set fd_User_Name=@sUserTrueName,fd_nickName=@sNickName,fd_Email=@sUserEmail
        ,fd_mobile=@sMobile,fd_tel=@sTel,fd_qq=@sQq,fd_msn=@sMsn,fd_birthday=@sBirthday
        ,fd_region=@sRegion,fd_city=@sCity,fd_selfIntro=@sSelfIntro
        ,fd_workYn=@sWorkYn,fd_openInfoYn=@sOpenInfoYn,fd_photoFileName=@sPhoto
        ,fd_sex=@iSex,fd_Specialty=@sSpecialty
        where fd_Login_Name=@sUserLoginName先说下 这个到底返回的 @@rowcount 是多少?
      

  12.   


     --试下主体程序改如下
    BEGIN
    declare @err int, @row1 int,@row2 int
    set @err=0
    begin tran addandup
        update tb_userRegInfo set fd_User_Name=@sUserTrueName,fd_nickName=@sNickName,fd_Email=@sUserEmail
        ,fd_mobile=@sMobile,fd_tel=@sTel,fd_qq=@sQq,fd_msn=@sMsn,fd_birthday=@sBirthday
        ,fd_region=@sRegion,fd_city=@sCity,fd_selfIntro=@sSelfIntro
        ,fd_workYn=@sWorkYn,fd_openInfoYn=@sOpenInfoYn,fd_photoFileName=@sPhoto
        ,fd_sex=@iSex,fd_Specialty=@sSpecialty
        where fd_userRegId=@iUserRegId;
       
       set @row1=@@rowcount
       --累計@@error
       set @err=@err+@@error
           --同时修改学生表中的信息
        update tb_Users set fd_User_Name=@sUserTrueName,fd_nickName=@sNickName,fd_Email=@sUserEmail
        ,fd_mobile=@sMobile,fd_tel=@sTel,fd_qq=@sQq,fd_msn=@sMsn,fd_birthday=@sBirthday
        ,fd_region=@sRegion,fd_city=@sCity,fd_selfIntro=@sSelfIntro
        ,fd_workYn=@sWorkYn,fd_openInfoYn=@sOpenInfoYn,fd_photoFileName=@sPhoto
        ,fd_sex=@iSex,fd_Specialty=@sSpecialty
        where fd_Login_Name=@sUserLoginName    set @row2=@@rowcount
        set @err=@err+@@error
        
    IF  @err =  0 and @row1=1 and @row2=1
      commit tran addandup
    else 
      rollback tran addandupEND
      

  13.   

    返回第二个update 的影响的行数