2013-04-27 34 views
-1

例如說我有這樣的MySQL聲明:2 SQL語句:1無效,1有效,有效的一個會被執行嗎?

select somefield from table where otherfield='some')%$#@%; insert into table..... 

將插入語句得到即使第一條語句引發錯誤執行?

+2

你可以試試看看結果嗎? – Noel 2013-04-27 15:40:20

+0

我目前無法訪問sql服務器,我只是好奇而已。 – Chris 2013-04-27 15:41:24

+0

我也不知道任何SQL模擬器會模擬MySQL的確切行爲 – Chris 2013-04-27 15:41:48

回答

1

在SQL Server中,有一個名爲XACT_ABORT的概念,當它設置爲ON時,會導致服務器在發生錯誤時中止整個批處理。我的SQL有這個功能內置的。

檢查here

MySQL Docs

默認情況下,MySQL的啓動與 自動提交模式下啓用每個新連接的會話,因此MySQL的一個後提交如果該語句沒有返回錯誤,則使用每個SQL 語句。如果 語句返回錯誤,則提交或回滾行爲取決於 錯誤。請參見第13.6.13節「InnoDB錯誤處理」。