sql里的事务语句 默认都有加数据锁的么?
如题,如果默认都没加锁,这样的话数据锁的基本是不是分为事务锁,表锁,和行锁呢,最好拿点代码解释下,谢谢。...
如题,如果默认都没加锁,这样的话 数据锁的基本是不是分为 事务锁,表锁,和行锁呢,最好拿点代码解释下,谢谢。
展开
1个回答
展开全部
就sqlserver数据库而言,每一条语句在默认事务级别下(可提交读级别)都是加锁的
如一条普通的查询,要加S锁(共享),一个更新要加U锁(更新)等等
你说的表锁、行锁只是锁的粗粒程度,如字面意思,行锁是锁住几行,表锁就是锁住整个表所在的全部数据页
如一条普通的查询,要加S锁(共享),一个更新要加U锁(更新)等等
你说的表锁、行锁只是锁的粗粒程度,如字面意思,行锁是锁住几行,表锁就是锁住整个表所在的全部数据页
追问
一般事务里是不是要加这个加上锁呢:SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 这里面的意思好像不锁,如你所说的话,直接执行一些插入更新的操作都不用特意加加锁语句的吧,会自动锁住,防止高并发带来的数据读脏的吧。
追答
默认的是read commit级别,不需要设置,都说是默认的了
对,所有的语句都会加锁的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询