一个关于事务的问题。大家帮忙解释一下
表结构:
CREATE TABLE [dbo].[t1](
[id] [int] NOT NULL,
[value] [int] NULL,
CONSTRAINT [PK_t1] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
测试一:
BEGIN TRANSACTION
insert into t1(id,value)values(2, '1 ')
insert into t1(id,value)values(2, '1 ')
commit TRANSACTION
结果:
select * from t1
id value
2 1
问题:
为什么还能插入一条记录呢?
测试二:
BEGIN TRANSACTION
insert into t1(id,value)values(2, '1 ')
insert into t1(id,value1)values(2, '1 ') --表中没有value1字段
commit TRANSACTION
结果:
select * from t1
id value
问题:
为什么没有插入记录?
测试三:
BEGIN TRANSACTION
insert into t1(id,value)values(2, '1 ')
select id,value1 from t1 --表中没有value1字段
commit TRANSACTION
结果:
select * from t1
id value
问题:
为什么没有出入记录?
测试四:
BEGIN TRANSACTION
insert into t1(id,value)values(2, '1 ')
select * from bb --bb表不存在
commit TRANSACTION 结果:
select * from t1
id value
2 1
问题:
为什么会茶入记录?
------解决方案--------------------另外,LZ在做这些事务的时候,set xact_abort的状态是什么呢。