Пусть есть таблица:
CREATE TABLE TestTable(
[ID] [int] IDENTITY(1,1) NOT NULL,
[Value] [varchar](5) NULL
)
Пытаемся вставить в нее записи:
-- OK
insert into testtable ([Value]) values ('12345')
begin tran
-- String or binary data would be truncated. The statement has been terminated.
insert into testtable ([Value]) values ('123456789')
rollback
-- OK
insert into testtable ([Value]) values ('12345')
В результате имеем дыру:
select * from testtable
ID Value
1 12345
3 12345
При чем неважно был ли средний insert-запрос выполнен в транзакции или нет.
Кто может объяснить такое странное поведение?