回答
使用transaction來包裝你的更新語句,並選擇查詢(測試更新),然後總是回滾。
例子:
BEGIN;
UPDATE accounts SET balance = balance - 100.00
WHERE name = 'Alice';
SELECT accounts WHERE WHERE name = 'Alice';
ROLLBACK; -- << Important! Un-does your UPDATE statement above!
事務通常與結尾的承諾,但因爲你只是測試,不想改變是永久性的,你只回滾。
將它包裝在transaction中,用SELECT和最後的回滾測試結果。
BEGIN;
UPDATE ...;
SELECT ...;
ROLLBACK;
您可以在UPDATE查詢中使用RETURNING來跳過SELECT查詢。 – 2012-02-09 06:29:51
如果您決定保留更改,請使用「COMMIT」而不是「ROLLBACK」。 – 2013-12-01 19:28:17
@FrankHeikens你應該擴大到一個答案,非常有用! – mkataja 2015-07-02 15:01:19
運行SELECT語句第一相同的檢查:通過SELECT返回的行會按更新修改的行
不足。可能有FK,CHECK約束,......簡單的SELECT不會命中。 SELECT只會測試WHERE子句,但即使SELECT成功,UPDATE也可能失敗。 – 2012-02-08 22:04:07
你總是可以在SQL Fiddle上建立一個示例數據庫並在那裏試用你的更新語句。
全面披露:我sqlfiddle.com
的考慮這個簡單的更新作者:
UPDATE Products
SET price_including_vat = price * 1.05
WHERE product_type = 'Food';
我會用這樣的測試:
SELECT price_including_vat AS price_including_vat__before,
price * 1.05 AS price_including_vat__after,
*
FROM Products
WHERE product_type = 'Food';
其實,我'd可靠地進行大腦,並做更像這樣的分析:
WITH updated AS
(
SELECT price_including_vat AS price_including_vat__before,
price * 1.05 AS price_including_vat__after,
*
FROM Products
WHERE product_type = 'Food'
)
SELECT *
FROM updated
WHERE price_including_vat__before = price_including_vat__after;
您可以使用一個工具來讓您快速獲取數據庫並輕鬆回滾。 我建議OffScale - 它基本上是數據庫的git。
主頁說這隻適用於MySQL - 或者至少沒有文檔說明如何使用不同的DBMS進行配置 – 2015-10-07 22:07:04
- 1. 如何測試PostgreSQL中的if語句?
- 2. 如何在PostgreSQL UPDATE語句中使用綁定值?
- 3. 在Update語句
- 4. 如何在UPDATE語句中使用JOIN?
- 5. 如何在測試/生產服務器上運行「composer update」?
- 6. 如何運行PostgreSQL中的多個更新語句
- 7. PostgreSQL 8.2:要求在UPDATE語句中存在特定的列
- 8. 如何理解update語句是否成功運行?
- 9. 如何使用MVC運行Sql Server Update語句
- 10. PostgreSQL在運行UPDATE時出現死鎖
- 11. SQLiteException:在UPDATE語句
- 12. Update語句在SQL
- 13. 如何在aspx中運行if語句?
- 14. 在Postgresql的Update語句中處理唯一和重複記錄
- 15. 在return語句中運行echo語句
- 16. 如何在If語句中正確執行等價測試?
- 17. 如何在switch語句中測試並行條件?
- 18. 如何在測試用例中執行try語句?
- 19. Update語句
- 20. 寫update語句
- 21. Update語句rethinkdb
- 22. Update語句2005
- 23. SQL update語句
- 24. Update語句
- 25. SQL UPDATE語句
- 26. 如何運行if語句
- 27. 如何使用if/else語句在UPDATE語句
- 28. 在運行django測試時在南遷移之前運行db語句
- 29. SQL語句在測試運行正常,打破上PROD
- 30. 在if語句中運行
有沒有辦法很容易地模擬它? – user1154863 2012-02-08 21:48:37