savepoint可以将事务回滚至指定位置。
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from planet_user_blacklist;
+----+----------+------------+------------+----------+---------------------------------+
| id | uid | created_at | updated_at | add_type | address |
+----+----------+------------+------------+----------+---------------------------------+
| 1 | 29904034 | 1 | 2 | 0 | 广州市番禺区番禺广场1 |
| 2 | 2839939 | 2 | 2 | 0 | 广州市番禺区南村2 |
+----+----------+------------+------------+----------+---------------------------------+
2 rows in set (0.00 sec)
mysql> update planet_user_blacklist set updated_at = 100 where id = 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> savepoint test1;
Query OK, 0 rows affected (0.00 sec)
mysql> update planet_user_blacklist set updated_at = updated_at +1000 where id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from planet_user_blacklist;
+----+----------+------------+------------+----------+---------------------------------+
| id | uid | created_at | updated_at | add_type | address |
+----+----------+------------+------------+----------+---------------------------------+
| 1 | 29904034 | 1 | 1100 | 0 | 广州市番禺区番禺广场1 |
| 2 | 2839939 | 2 | 2 | 0 | 广州市番禺区南村2 |
+----+----------+------------+------------+----------+---------------------------------+
2 rows in set (0.00 sec)
mysql> rollback to test1;
Query OK, 0 rows affected (0.00 sec)
mysql> update planet_user_blacklist set updated_at = updated_at +10000 where id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from planet_user_blacklist;
+----+----------+------------+------------+----------+---------------------------------+
| id | uid | created_at | updated_at | add_type | address |
+----+----------+------------+------------+----------+---------------------------------+
| 1 | 29904034 | 1 | 10100 | 0 | 广州市番禺区番禺广场1 |
| 2 | 2839939 | 2 | 2 | 0 | 广州市番禺区南村2 |
+----+----------+------------+------------+----------+---------------------------------+
2 rows in set (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.01 sec)
mysql> select * from planet_user_blacklist;
+----+----------+------------+------------+----------+---------------------------------+
| id | uid | created_at | updated_at | add_type | address |
+----+----------+------------+------------+----------+---------------------------------+
| 1 | 29904034 | 1 | 10100 | 0 | 广州市番禺区番禺广场1 |
| 2 | 2839939 | 2 | 2 | 0 | 广州市番禺区南村2 |
+----+----------+------------+------------+----------+---------------------------------+
2 rows in set (0.00 sec)