假设有以下一段代码:
SqlConnection conn = new SqlConnection(DbHelperSQL.connectionString);
conn.Open();
using (SqlTransaction CheckOutTrans_DB = conn.BeginTransaction())
{
表A的添加
表B的添加
}
我想问下在事务中对于表A 是锁表?锁字段?还是锁记录呢?
SqlConnection conn = new SqlConnection(DbHelperSQL.connectionString);
conn.Open();
using (SqlTransaction CheckOutTrans_DB = conn.BeginTransaction())
{
表A的添加
表B的添加
}
我想问下在事务中对于表A 是锁表?锁字段?还是锁记录呢?
执行CREATE Table Test
(
id int,
name varchar(100)
)GO
begin tran
insert into Test values(1,'')再
新建查询
执行select * from Test可以看出第二个查询是别锁定了
什么叫做“C#中的事务”啊?SQL Server数据库系统默认是行锁(基本上凡是正规的商用关系数据库都是行锁,只有个别开源的简单数据库系统才是表锁)。你可以找一本SQL Server管理系统的手册看看关于锁的机制。
晕!你给查询写个where条件测试一下啊!
8楼的说的很对,SQL Server数据库系统默认就是行锁。
8楼的说的很对,SQL Server数据库系统默认就是行锁。
不好意识正错了,的确是行级别锁
我开始还纳闷了,为啥会锁表了原来我的表上面没建立主键
GO
CREATE TABLE [dbo].Test(
[ID] INT NOT NULL,
Name [nvarchar](20)
CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO--插入5行数据
insert into Test values(1,'')
insert into Test values(2,'')
insert into Test values(3,'')
insert into Test values(4,'')
insert into Test values(5,'')begin tran
--更新一行
Update Test set name='asasas1111' where id=1
insert into Test values(6,'')select * from Test where id=1
昨天一直想不通,今天幸好有看了一次。