Я делаю это в SQL Server 2005. У меня есть таблица, есть только один столбец типа int, o вы не можете вставлять в него символ.Мы можем откатиться, не сказав «Откат»?
Если я запустил это, у меня будет один ряд, вставленный в мой стол.
INSERT INTO TestTable VALUES(3) --success
INSERT INTO TestTable VALUES('b') --fail, cannot insert char
Если я запустил это, у меня будет строка ZERO, вставленная в мой стол. Таким образом, транзакция 2-й группы выполняет одно исполнительное устройство. Если одна задача завершилась неудачно, вся транзакция завершится с ошибкой.
BEGIN TRANSACTION
INSERT INTO TestTable VALUES(3)
INSERT INTO TestTable VALUES('b')
COMMIT TRANSACTION
Мой вопрос: Это кажется, что ROLLBACK TRANSACTION бесполезно, потому что у меня нет ROLLBACK в приведенном выше коде, но она все еще откат .... Может кто-нибудь помочь мне понять это?
Если * ни один из ваших утверждений не работает, но вы тем не менее хотите отменить изменения, «ROLLBACK» очень полезен. :) –
что ВСЕ ваш код? (или, по крайней мере, весь * соответствующий * код) – MilkyWayJoe
@ MilkyWayJoe: да, это все мой код. Просто для обучения. –