mysql事务
#mysql事务
/*
什么是事务?
所谓的事务处理其实就是保证数据操作的完整性,所有的操作要
么同时成功,要么同时失败
事务的特性(ACID)
1.原子性Atomicity
2.一致性Consistency
3.隔离性Isolation
4.持久性Durability
*/
/*
在mysql数据库中如何使用事务
1.选择引擎(Myisam引擎不支持事务,InnoDB引擎支持事务)
2.开启事务(START TRANSACTION)
3.提交事务/回滚事务(COMMIT/ROLLBACK)
*/
#
CREATE TABLE account(
id int,
name VARCHAR(50),
money int UNSIGNED
)ENGINE INNODB charset utf8;
#
INSERT INTO account VALUES(1, '韦小宝', 5000);
INSERT INTO account VALUES(2, '令狐冲', 6000);
#
SELECT * FROM account;
#转账(需要用到事务)
START TRANSACTION; #开启事务
#如下2条sql语句是一个整体,要么同时成功,要么同时失败
UPDATE account SET money = money + 500 WHERE NAME = '令狐冲';
UPDATE account SET money = money - 500 WHERE NAME = '韦小宝';
COMMIT; #提交事务
#ROLLBACK; #回滚事务
#
SELECT * FROM account;
#因为money列上设置了UNSIGNED,所以会报错
#报错1690 - BIGINT UNSIGNED value is out of range in '(`myemployees`.`account`.`money` - 8000)'
UPDATE account SET money = money - 8000 WHERE NAME = '韦小宝';