9

次のような多くの SQL 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 Manager の SQL 構文でこれを記述する方法は?

編集: SQLite Manager で標準構文を使用すると、次のエラー メッセージが表示されます: "SQLiteManager: BEGIN TRANSACTION; [ トランザクション内でトランザクションを開始できません "

4

2 に答える 2

19

SQL Documentionによると、サポートされている構文は 2 つあります。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)
于 2013-03-19T14:25:05.220 に答える
1
BEGIN TRANSACTION;
.....YOUR SQL Statements here

COMMIT;
于 2013-03-19T14:14:16.647 に答える