2013-03-19 53 views
4

我要執行這樣的很多SQL UPDATE語句:SQLITE散裝UPDATE語句

UPDATE cityd SET time_zone='-7.000000' WHERE locId = 173567; 
UPDATE cityd SET time_zone='-8.000000' WHERE locId = 173568; 
UPDATE cityd SET time_zone='-6.000000' WHERE locId = 173569; 
UPDATE cityd SET time_zone='-5.000000' WHERE locId = 173570; 
UPDATE cityd SET time_zone='-6.000000' WHERE locId = 173571; 

我想優化了交易時間,所以我需要使用BEGIN TRANSACTION/COMMIT對。如何在SQLtite經理寫這篇文章的SQL語法?

編輯: 當我使用SQLite的經理,我收到此錯誤信息的標準語法: 「的SQLiteManager:BEGIN TRANSACTION;不能在事務內啓動一個事務」

+0

所以這是運行你的SQL語句的代碼已經把他們周圍的事務。因此,你不需要在這種情況下將其佈置交易... – 2013-03-19 14:28:04

回答

0
BEGIN TRANSACTION; 
.....YOUR SQL Statements here 

COMMIT; 
+0

當我在SQLite的經理鍵入此我收到此錯誤: 「的SQLiteManager:BEGIN TRANSACTION;不能在事務內啓動一個事務」 – 2013-03-19 14:20:44

+1

它看起來像的SQLiteManager在默認情況下運行的sql語句的交易,但我不知道。 – 2013-03-19 14:24:49

9

據上SQL Documention,有兩個支持CASE

CASE x WHEN w1 THEN r1 WHEN w2 THEN r2 ELSE r3 END 

CASE WHEN x = w1 THEN r1 WHEN x = w2 THEN r2 ELSE r3 END 

所以語法的多個UPDATE語句可以進一步簡化爲

UPDATE cityd 
SET  time_zone = CASE locId 
         WHEN 173567 THEN '-7.000000' 
         WHEN 173568 THEN '-8.000000' 
         WHEN 173569 THEN '-6.000000' 
         WHEN 173570 THEN '-5.000000' 
         WHEN 173571 THEN '-6.000000' 
        END 
WHERE locId IN (173567, 173568, 173569, 173570, 173571)