同时对三张表进行插入操作,事务保证完整性。下面进行简单测试:
1. 锁定表
锁定用户表
LOCK TABLES user WRITE;
查看表是否锁定:
show TABLES In_use ;
显示被锁定的表。
2. 验证在同一session下是否可以插入操作
(userId,ip,type,terminal) (,,,);
可以操作成功。
3. 启动spring应用,执行插入操作,不能成功。
4,解锁
UNLOCK TABLES;
查看被锁定的表:
show TABLES In_use ;
上述表不在锁定中。
5. 调用spring应用,执行插入操作,操作可以成功。
所以,应用spring的@transactional进行事务管理是ok的。
附录:
Syntax:https://dev.MysqL.com/doc/refman/5.0/en/show-open-tables.html
db_name]
[LIKE 'pattern' | WHERE expr]
The and clauses may be used as of MysqL 5.0.12. The clause,if present,indicates which table names to match. The clause,restricts the tables shown to those present in the db_namedatabase.
output has the following columns:
The database containing the table.
The table name.
The number of table locks or lock requests there are for the table. For example,if one client acquires a lock for a table using , will be 1. If another client issues while the table remains locked,the client will block waiting for the lock,but the lock request causes to be 2. If the count is zero,the table is open but not currently being used. is also increased by the statement and decreased by .
Whether the table name is locked. Name locking is used for operations such as dropping or renaming tables.
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250