2011-05-29 35 views
0

什麼是最可靠的方法,以確定哪些語句是「查詢」與「改變」?例如,SELECTUPDATE/INSERT/CREATE確定非修改修改語句SQLite中

解析聲明我自己似乎是明顯的第一次嘗試,但我不禁想到這將是一個片狀的解決方案。剛開始尋找SELECT的時候並不起作用,因爲PRAGMA也可以返回結果,而且我確信有很多方法可以使策略失敗。測試從遊標返回的零行也不起作用,因爲SELECT顯然可以返回零結果。

我通過Python的sqlite3的模塊SQLite的工作。

+0

如果您只需聲明一個語句*不能*修改數據,則將其包裝在一個事務中並在最後回滾。 – SingleNegationElimination 2011-05-29 15:48:17

回答

1

使用sqlite3_changes API調用,使用changes功能,也可以從SQL。

隨着TokenMacGuy提到,您可以回滾包含導致更改的語句的事務; sqlite3_changes函數會讓你知道是否有必要。

如果您需要有關受影響的表和行的更多細粒度信息,還有update_hook回調。