Sqljocky,具有多组参数的transactioned查询

时间:2014-02-24 17:15:20

标签: mysql sql dart

我正在使用sqljocky将数据插入MySQL数据库。我需要先截断一个表,然后在其中插入多行。我会在一个事务中执行此操作,但似乎sqljocky现在根本不支持这个(或者我在dart和sqljocky中很新)。

我找到的解决方案如下,但我想知道是否有更好的解决方案。

// Start transaction
pool.query('START TRANSACTION').then((r) {

    // Truncate table
    pool.query('TRUNCATE myTable').then((r) {

        // Prepare statement to insert new data
        pool.prepare('REPLACE INTO myTable (Id, Name, Description) VALUES (?,?,?)').then((query) {

            // Execute query inserting multiple rows
            query.executeMulti(myArrayValues).then((results) {

                 // Other stuff here
                 pool.query('COMMIT').then((r) {
                     ...

老实说,我仍然想知道这段代码是否真的执行了一个transactioned查询!

2 个答案:

答案 0 :(得分:1)

以下是使用事务支持重写的相同代码:

// Start transaction
pool.startTransaction().then((trans) {

    // Delete all from table
    trans.query('DELETE FROM myTable WHERE 1=1').then((r) {

        // Prepare statement
        trans.prepare('REPLACE INTO myTable (Id, Name, Description) VALUES (?,?,?)').then((query) {

          // Execute query inserting multiple rows
          query.executeMulti(myArrayValues).then((results) {
              // Stuff here

              // Commit
              trans.commit().then((r) { ...

答案 1 :(得分:0)

使用ConectionPool.startTransaction()

*                                                              You
* must use this method rather than `query('start transaction')` otherwise
* subsequent queries may get executed on other connections which are not
* in the transaction.    

尚未尝试过。