你说的情况应该不会出现
这是事务的读一致性决定的,你第一个用户在读取表B的数据的时候,无论任何用户修改都不会影响到你,例如你 for x in select * from b,那么即使别的用户修改了表b,并且提交了,你还是用的原来的数据,不会影响到你的结果,但是一旦你现在这个事务结束了,再去使用B表,那么你的数据将是别的用户修改后的数据 ------解决方案-------------------- 并发处理,从你的逻辑性上来看,你的B表可以truncate 说明他里面的数据的“临时性”
B表应该只是作为中转站的作用,所以把B表设计成 global temporary table 你的问题迎刃而解
什么都不用考虑。
因为,一个用户truncate global temporary table 时,别的用户的数据不受它影响。
至于如果B表不是 global temporary table ,你的担忧是对的,在应用中有出现此类问题的隐患,一遍在并发比较大的处理里面不建议使用。 ------解决方案-------------------- 顶5楼,如果各个用户之间数据不需要共享,定义成临时表。
CREATE GLOBAL TEMPORARY TABLE