Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';在事务SQL Server中,是否在第二次回滚到保存点?_Sql_Sql Server_Transactions - Fatal编程技术网

为什么可以';在事务SQL Server中,是否在第二次回滚到保存点?

为什么可以';在事务SQL Server中,是否在第二次回滚到保存点?,sql,sql-server,transactions,Sql,Sql Server,Transactions,我创建了一个名为“TestTable”的表 然后我在表中插入一些记录,如下所示: BEGIN TRANSACTION INSERT INTO TestTable VALUES(1,1) SAVE TRANSACTION TS1 BEGIN TRANSACTION INSERT INTO TestTable VALUES(2,2) ROLLBACK TRANSACTION TS1 --roll back to TS1 a

我创建了一个名为“TestTable”的表

然后我在表中插入一些记录,如下所示:

BEGIN TRANSACTION
    INSERT INTO TestTable VALUES(1,1)
    SAVE TRANSACTION TS1
    BEGIN TRANSACTION
         INSERT INTO TestTable VALUES(2,2)
         ROLLBACK TRANSACTION TS1
         --roll back to TS1 at the first time

    BEGIN TRANSACTION 
    INSERT INTO TestTable VALUES(4,3)
    ROLLBACK TRANSACTION TS1
    --roll back to TS1 at the second time
Messages show off“无法回滚TS1。未找到该名称的事务或保存点。”

然后我想有可能只回滚到保存点一次吗

这边

    CREATE TABLE dbo.TranTest
    (
        c1      int
    )
GO

    BEGIN       TRAN    T1

        INSERT INTO [dbo].[TranTest]
                   ([c1])
             VALUES
                   (1)

    SAVE        TRAN    T1

        INSERT INTO [dbo].[TranTest]
                   ([c1])
             VALUES
                   (2)

    ROLLBACK    TRAN    T1
GO

你为什么要加标签?我以为你在问SQL Server-它们是两种不同的产品,现在你的问题都被标记了。你有很多begin事务没有回滚或提交为什么?是的,我故意犯了这个错误,想问一下为什么我不能再次回滚TS1?事务语句以COMMIT或ROLLBACK语句结尾。
    CREATE TABLE dbo.TranTest
    (
        c1      int
    )
GO

    BEGIN       TRAN    T1

        INSERT INTO [dbo].[TranTest]
                   ([c1])
             VALUES
                   (1)

    SAVE        TRAN    T1

        INSERT INTO [dbo].[TranTest]
                   ([c1])
             VALUES
                   (2)

    ROLLBACK    TRAN    T1
GO