1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| DROP TABLE IF EXISTS `dl_account_t`; CREATE TABLE `dl_account_t` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) DEFAULT NULL, `money` INT(11) DEFAULT 0, `account_id` INT(11) DEFAULT 0, PRIMARY KEY (`id`), UNIQUE `uk_account_id` (`account_id`) )ENGINE = INNODB AUTO_INCREMENT=0 DEFAULT CHARSET = utf8;
select * from dl_account_t INSERT INTO `dl_account_t`(`name`,`money`,`account_id`) VALUES ('C', 1000, 10001),('B', 1000, 10002),('A', 1000, 10003),('ZZ', 1000, 10005)
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; BEGIN
UPDATE `dl_account_t` SET `money` = `money` - 100 WHERE `id` = 1;
UPDATE `dl_account_t` SET `money` = `money` + 100 WHERE `id` = 2;
rollback
DROP TABLE IF EXISTS `dl_mark_t`; CREATE TABLE `dl_mark_t` ( `a` INT(11) NOT NULL DEFAULT '0', `b` INT(11) DEFAULT NULL, PRIMARY KEY (`a`), UNIQUE KEY `uk_b` (`b`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `dl_mark_t` VALUES (1,1),(5,4),(20,20),(25,12);
BEGIN
insert into `dl_mark_t` values(26,10);
insert into `dl_mark_t` values(30,10);
insert into `dl_mark_t` values(40,9);
BEGIN
insert into `dl_mark_t` values(27, 29);
insert into `dl_mark_t` values(28, 29);
insert into `dl_mark_t` values(29, 29);
ROLLBACK;
|