具有自动提交的插入是否保证对数据库上的任何/每个SqlConnection立即可见,或者仅在它自己的SqlConnection上可见?
我有一个包含3个SqlConnections的过程。 Connection One与驱动循环的SqlDataReader相关联。使用循环,Connection Two用于获取测试数据,Connection Three用于在表中插入行。插入自动提交。
我们遇到测试(使用Connection Two数据)失败的情况。一种可能的解释是,Connection Two有时在前一次循环中看不到连接三插入的行。这可能吗?
我没有看到组合Two和Three的问题,我将会这样做,但我没有任何办法强制发生此错误,我想知道这个解释是否甚至可能。
答案 0 :(得分:2)
是的,自动提交的插入与任何其他已提交的插入相同,并且在其他连接上可见。
但是,插入行不会更改已存在的SqlDataReader
返回的行,因为SqlDataReader
对象封装了一个记录集 - 查询的结果 - 而不是查询本身。
我不确定你的“连接二”是做什么的,但是如果它取决于INSERT
中C3 SqlDataReader
的结果,那么它肯定会失败原因。
答案 1 :(得分:0)
这是你在做什么?