【发布时间】:2013-03-24 22:32:28
【问题描述】:
假设我有下面的
Begin Tran
Insert Into tbl(name) values('name1');
Insert Into tbl(name) values('name2');
Rollback
End
tbl 表有一个标识列(id)和一个 varchar 列(名称)。
现在显然数据将被回滚。
当我再次尝试插入记录时,Id 列的值为 3 而不是 1!
为什么?为什么 Identity 列的值不参与交易?它存储在哪里?等等
我已经阅读了this 和this,但我仍然需要更深入的信息。
提前致谢
【问题讨论】:
-
为什么链接到问题/答案不充分?你还期待什么?
-
先生,最近我听说,由于列值一直保存在某些系统表中,因此它不能参与事务,因为它们不是要这样做的(系统表)。是真的吗?如果是这样,那么我想了解更多有关它的信息吗?还是我收集到的信息完全错误?
-
它不参与事务的原因是因为设计决定它不参与事务。关于它的存储位置等的任何其他内容都是偶然的。
标签: sql-server