我在Management Studio中使用BEGIN TRANSACTION
開始了一項交易,但我忘記了ROLLBACK或COMMIT約10分鐘。我嚇壞了,回到了ROLLBACK我的改變。這是否回滾了那段時間內通過服務器或通過我的用戶/連接進行的所有查詢?交易是否影響所有查詢?
4
A
回答
4
只要您連接:-)
(編輯:而你的交易,因爲BEGIN TRANSACTION如果你沒有更新之前在同一個會話的BEGIN TRANSACTION,他們當然不會被回滾。)
但是:它可能已經給出了錯誤的答案取決於什麼鎖類型及查詢提示其他會議分別正在使用中選擇...
一個例子:
在一個SQL Studio的會話,請執行下列操作:
CREATE TABLE a(a INT)
INSERT INTO a VALUES(1)
BEGIN TRANSACTION
UPDATE a
SET a = 2
SELECT *, @@TRANCOUNT
FROM a
- >你會看到 '2,1' 作爲結果
打開一個新的會話(在SQL工作室標籤)
務必:
SELECT *, @@TRANCOUNT
FROM a (NOLOCK)
你會看到「 2,0'
現在,在第一次會議中,做
ROLLBACK TRANSACTION
SELECT *, @@TRANCOUNT
FROM a
- >事務回滾,你看 '1,0'
- >在第二屆一個選擇也將顯示 '1,0'
這樣:如果你使用(NOLOCK)提示,你可以得到未提交的數據結果 - >這可能會導致非常意想不到的效果:-)
不要忘記:
DROP TABLE a
時,即可大功告成;)
3
它只應該影響你的交易,所以只有在你的會話期間完成的事情。
1
你很好。所有其他查詢都會順利完成。
0
您需要查看交易的ACID屬性。您看到,如果交易回滾或承諾交易對其他交易的結果沒有影響,則無需擔心。
1
它應該回滾事務中所做的所有查詢,所以它比用戶\連接更具體,並且絕對不是盒子上的所有查詢。
0
您的回滾隻影響您的交易。我在ACID。
但是,您鎖定的行,頁面或整個表會影響其他用戶,如果他們想要使用它們。這取決於:
- 他們想要做什麼
- 鎖定超時
- 客戶端命令超時
相關問題
- 1. 確實getWritableDatabase()影響交易
- 2. 交易是否像大查詢?
- 3. 查詢參數是否影響ContentResolver notifyChange
- 4. globalCompositeOperation是否影響到所有圖層?
- 5. jdbc是否會自動提交影響所有連接?
- 6. 如何有效地查詢表,而不會影響現場交易
- 7. 影響查詢
- 8. PDO交易是否阻塞,直到所有其他交易被提交?
- 9. 易餅圖沒有影響
- 10. 序列不受交易影響?
- 11. shopify交易API獲取所有交易
- 12. 交易影響如何讀取下一個非祖先查詢一致性NDB
- 13. 檢查更新查詢是否影響到行
- 14. 是否對所有帳戶都是唯一的Authorize.net交易ID?
- 15. 影響影響所有在css按鈕
- 16. 函數內所有查詢的Codeigniter交易
- 17. 我是否需要加入查詢的交易?
- 18. 交易中的查詢
- 19. 授權查詢交易
- 20. 嵌套查詢及交易
- 21. PHP PDO更新查詢影響執行時的所有行
- 22. SQL查詢效率 - UNION的影響的所有
- 23. 更改查詢字符沒有影響
- 24. 設置defaultRowPrefetch對查詢沒有影響
- 25. 交易是否可能沒有@Version annos
- 26. 交易搜索是否有分頁?
- 27. 此交易方法是否有效?
- 28. 實體上的Blob屬性是否會影響查詢性能?
- 29. 提取的列數是否影響MySQL查詢速度?
- 30. Redshift列編碼是否會影響查詢執行速度?
你也許已經鎖定其他用戶,你就太做了一個變化表。 – 2009-09-25 17:52:22
我想我確實鎖定了表中的所有人。 – 2009-09-25 17:55:39