2013-07-25 67 views
0

我已經學會了如何把多個插入到一個事務使用SELECT UNION如本例sqlite3的:在一個事務中的多個更新

var newQuery = true, query = ''; 
for (i=0; i<locations_length; i++) { 
    if (newQuery) { 
     query = 'INSERT INTO myTable (id, name, code)'; 
     newQuery = false; 
    } 
    else { 
     query += ' UNION'; 
    } 

    query += ' SELECT "'+values[i][0]+'", "'+values[i][1]+'", "'+values[i][2]+'"'; 

    if (i!=0 && i%499==0) { 
     db.execute(query); 
     newQuery = true; 
    } 
} 

,但它似乎並沒有對多個更新工作。

有什麼辦法可以把多個更新放入一個事務?

另外,有沒有辦法把INSERT和UPDATE混合成一個事務?

我正在用Python 2.7的方式。

非常感謝你提前。

+2

您正在使用Python,但是您發佈了非Python代碼。你是否引用非Python代碼並試圖在Python中重現它? –

+0

看起來像JavaScript ...你怎麼敢叫javascript python? –

+0

您不能混合使用INSERT和UNIONs http://www.sqlite.org/lang_insert.html – Himanshu

回答

1

使用BEGIN TRANSACTIONCOMMITROLLBACK並且您可以在單個事務中發生任意數量的語句。

http://www.sqlite.org/lang_transaction.html

+0

非常感謝。它真的沒有限制嗎?我說的是幾百萬INSERT和UPDATE – ytrewq

+1

這個限制可能取決於你的系統和sqlite的配置。請參閱:http://stackoverflow.com/questions/7199305/sqlite-number-of-transactions-limit – Luke

+0

Thanx!順便說一句,它是否也適用於UPDATE?以及UPDATE和INSERT的混合? – ytrewq

相關問題