SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, QUOTED_IDENTIFIER, CONCAT_NULL_YIELDS_NULL, XACT_ABORT ON
GO
SET NUMERIC_ROUNDABORT OFF
GOBEGIN TRANSACTIONIF @@ERROR <> 0
   IF @@TRANCOUNT = 1 ROLLBACK TRANSACTION
GOIF @@TRANCOUNT = 1
   DROP INDEX [dbo].[Inn_City].[IX_Inn_City]
GOIF @@ERROR <> 0
   IF @@TRANCOUNT = 1 ROLLBACK TRANSACTION
GOIF @@TRANCOUNT = 1
   ALTER TABLE [dbo].[Inn_GemaltoLocations] DISABLE TRIGGER [Inn_GemaltoLocations_delete]
GOIF @@ERROR <> 0
   IF @@TRANCOUNT = 1 ROLLBACK TRANSACTION
GOIF @@TRANCOUNT = 1
   ALTER TABLE [dbo].[Inn_GemaltoLocations] DISABLE TRIGGER [Inn_GemaltoLocations_insert]
GOIF @@ERROR <> 0
   IF @@TRANCOUNT = 1 ROLLBACK TRANSACTION
GOIF @@TRANCOUNT = 1
   COMMIT TRANSACTION
GOBEGIN TRANSACTION

解决方案 »

  1.   

    IF @@ERROR <> 0
      IF @@TRANCOUNT = 1 ROLLBACK TRANSACTION 
    報錯時,有事務沒提交時返回事務 
      

  2.   

    一堆transaction而已: 如drop index, 和disable trigger最后一个应该是COMMIT TRANSACTION吧?
      

  3.   

    @@ERROR<>0
    報錯
    @@TRANCOUNT = 1 
    事務沒提交
    ROLLBACK TRANSACTION
    返回事務 
      

  4.   

    @@TRANCOUNT = 1
    有1個事務沒提交 
      

  5.   

    IF @@TRANCOUNT = 1 
      ALTER TABLE [dbo].[Inn_GemaltoLocations] DISABLE TRIGGER [Inn_GemaltoLocations_delete] 
    GO IF @@ERROR <> 0 
      IF @@TRANCOUNT = 1 ROLLBACK TRANSACTION 
    GO IF @@TRANCOUNT = 1 
      ALTER TABLE [dbo].[Inn_GemaltoLocations] DISABLE TRIGGER [Inn_GemaltoLocations_insert] 
    GO 
    这是我用的工具执行的sql怎么把触发器给DISABLE为什么????
      

  6.   

    --设置一些参数,具体参考联机丛书,
    SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, QUOTED_IDENTIFIER, CONCAT_NULL_YIELDS_NULL, XACT_ABORT ON 
    GO 
    SET NUMERIC_ROUNDABORT OFF 
    GO 
    --启动事务
    BEGIN TRANSACTION  --1
    --根据判断是否有错误并且是否有未提交事务,
    --如果有,则回滚事务,
    IF @@ERROR <> 0 
      IF @@TRANCOUNT = 1 ROLLBACK TRANSACTION 
    GO 
    --如果 --1的事务成功启动,
    --删除索引,[dbo].[Inn_City].[IX_Inn_City] 
    IF @@TRANCOUNT = 1 
      DROP INDEX [dbo].[Inn_City].[IX_Inn_City] 
    GO 
    --根据判断是否有错误,
    --如果有,则回滚事务 --1 ,
    IF @@ERROR <> 0 
      IF @@TRANCOUNT = 1 ROLLBACK TRANSACTION 
    GO 
    --根据判断事务 --1 没有回滚,则禁止删除触犯器.
    IF @@TRANCOUNT = 1 
      ALTER TABLE [dbo].[Inn_GemaltoLocations] DISABLE TRIGGER [Inn_GemaltoLocations_delete] 
    GO 
    --根据判断是否有错误,
    --如果有,则回滚事务 --1 ,
    IF @@ERROR <> 0 
      IF @@TRANCOUNT = 1 ROLLBACK TRANSACTION 
    GO 
    --根据判断事务 --1 没有回滚,则禁止新增触犯器.
    IF @@TRANCOUNT = 1 
      ALTER TABLE [dbo].[Inn_GemaltoLocations] DISABLE TRIGGER [Inn_GemaltoLocations_insert] 
    GO 
    --根据判断是否有错误,
    --如果有,则回滚事务 --1 ,
    IF @@ERROR <> 0 
      IF @@TRANCOUNT = 1 ROLLBACK TRANSACTION 
    GO 
    --根据判断是否有事务 --1 ,
    --如果事务存在,则提交
    IF @@TRANCOUNT = 1 
      COMMIT TRANSACTION 
    GO 
    --启动下一个事务 --2
    BEGIN TRANSACTION
      

  7.   

    /*
    当 SET ANSI_NULLS 为 ON 时,如果比较中有一个或多个表达式为 NULL,则既不输出 TRUE 也不输出 FALSE,而是输出 UNKNOWN。这是因为未知值不能与其他任何值进行逻辑比较。这种情况发生在一个表达式与 NULL 单词进行比较,或者两个表达式相比,而其中一个表达式取值为 NULL 时。例如,当 ANSI_NULLS 为 ON 时,以下比较总是生成 UNKNOWN:*/
    SET ANSI_NULLS ON 
     
    /*
    针对小于定义的列大小的值以及 char、varchar、binary 和 varbinary 数据中有尾随空格的值,此语句可以控制存储此类值的方式。
    */
    SET ANSI_PADDING ON................
      

  8.   

    我用工具执行的脚本怎么都把索引都把drop掉啊,昏死我,还要重加.:(
      

  9.   


    drop index 表名.索引名
      

  10.   

    哦。MM的问题回答的人就是多啊。改天我去弄个人妖ID