005 Sql 中需要注意的事务问题.md

005 Sql 中需要注意的事务问题

SqlServer 中开启与关闭事务

select * from TestTransaction;

-- 开启事务
Begin Transaction -- isolation read committed 

-- 带条件的更新
update TestTransaction set name = '李四' where id = 1;

-- 插入数据
INSERT INTO TestTransaction(NAME,age)  VALUES('张三',18); 

-- 提交事务
COMMIT Transaction

-- 回滚事务
ROLLBACK Transaction

MySql中开启与关闭事务

select * from TestTransaction;

-- 开启事务
START TRANSACTION;

-- 带条件的更新

update TestTransaction set name='李四' where id = 1;

-- 插入数据
insert into TestTransaction(name,age)  values('张三',18); 

-- 提交事务
COMMIT 

-- 回滚事务
ROLLBACK

值得注意的是,在数据库表中,如果我们建立的表没有建立主键将面临严重的问题,当此表在事务中被进行Insert操作,并且在事务进行中,那么当别的任何数据库连接对象,来查询或者操作此表时,整个表都是被锁定状态.(即只能等待操作此表的事务提交或者回滚,才能进入到此表中)整个表都被锁了,这是个很严重的问题,所以我们建立数据库表时,我们一定要为其指定主键,这样的话,即使有事务在操作此表,那么事务锁定的也仅仅是行(被事务操作的行),而不是整个表.

posted @ 2020-05-06 18:12  HelloZyjS  阅读(161)  评论(0编辑  收藏  举报