一个事务中先插入数据,然后再查询所有数据,能查到刚才的记录吗
9个回答
展开全部
先插入再查询在事务内部的SELECT语句可以查询到数据,但是回滚后,不能查询到数据。先删除再查询。
在同一个事务中,数据需要保证一致性,也就是说,在当前的事务中,删除了就是看不到了,插入了就是多了一条数据。
但这些操作都是在当前事务内部的。对于外界是隔离的。如果我们开启事务插入一条数据,还没有提交,这时新开一个事务,去查询数据,是发现不了未提交数据的。
先插入再更新控制台打印的sql语句mybatis会将两条执行语句在同一个sqlSession中执行。先删除再查询控制台打印的sql语句。
展开全部
能查到的,错误回答还能得最佳答案也是醉了。只不过事务没走完的情况下你用其他工具去数据库查是没有的。代码中查询是有你之前新增的数据的 你可以理解为预备操作,数据都已经新增出来了,只是还没commit掉
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java中在同一db下先插入一条数据未commit,在执行查询语句是可以查到的,db使用的是jdbc,亲测是可以的,忘采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以查询到,以下是Oracle的存储过程测试代码,游标返回了一行数据2,
但是在别处查询不到该数据,因为该事务未提交。
总结:在同一个事务中,不论提交与否,变化均有效,但是跨事务时只有提交后变化才有效。
CREATE OR REPLACE Procedure p_test(Rt_Cursor Out Types.Cursortype ) Is
Begin
delete from test;
commit;
insert into test values(1);
update test set test_col=2;
Open Rt_Cursor For
select * from test;
End p_test;
下面是游标的定义
CREATE OR REPLACE Package Types As
Type Cursortype Is Ref Cursor;
End;
但是在别处查询不到该数据,因为该事务未提交。
总结:在同一个事务中,不论提交与否,变化均有效,但是跨事务时只有提交后变化才有效。
CREATE OR REPLACE Procedure p_test(Rt_Cursor Out Types.Cursortype ) Is
Begin
delete from test;
commit;
insert into test values(1);
update test set test_col=2;
Open Rt_Cursor For
select * from test;
End p_test;
下面是游标的定义
CREATE OR REPLACE Package Types As
Type Cursortype Is Ref Cursor;
End;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同一个事务内的所有操作可以理解为同一把锁,所以无论insert或者update的内容都可以被这个事务内的select读出来。其他的事务能不能读到,要看数据库的事务隔离等级。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询