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