PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Pernyataan INSERT opsional dalam rantai transaksi menggunakan NodeJS dan Postgres

Manajemen transaksi manual adalah jalan yang berbahaya, cobalah untuk menghindarinya!;)

Inilah cara melakukannya dengan benar, dengan bantuan pg-promise:

function(req, res) {
    db.tx(t => { // automatic BEGIN
            return t.one('INSERT_1 VALUES(...) RETURNING id', paramValues)
                .then(data => {
                    var q = t.none('INSERT_2 VALUES(...)', data.id);
                    if (req.body.value != null) {
                        return q.then(()=> t.none('INSERT_3 VALUES(...)', data.id));
                    }
                    return q;
                });
        })
        .then(data => {
            res.send("Everything's fine!"); // automatic COMMIT was executed
        })
        .catch(error => {
            res.send("Something is wrong!"); // automatic ROLLBACK was executed
        });
}

Atau, jika Anda lebih suka sintaks ES7:

function (req, res) {
    db.tx(async t => { // automatic BEGIN
            let data = await t.one('INSERT_1 VALUES(...) RETURNING id', paramValues);
            let q = await t.none('INSERT_2 VALUES(...)', data.id);
            if (req.body.value != null) {
                return await t.none('INSERT_3 VALUES(...)', data.id);
            }
            return q;
        })
        .then(data => {
            res.send("Everything's fine!"); // automatic COMMIT was executed
        })
        .catch(error => {
            res.send("Something is wrong!"); // automatic ROLLBACK was executed
        });
}

PERBARUI

Generator ES6 diganti dengan ES7 async /await dalam contoh, karena pg-promise berhenti mendukung generator ES6 dari versi 9.0.0




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 7 Tips Praktik Terbaik untuk Pemuatan Data Massal PostgreSQL

  2. Gagal menemukan fungsi konversi dari tidak dikenal ke teks

  3. Dapatkan Nama Hari dari Tanggal di PostgreSQL

  4. Kegagalan Otomatis Database Moodle PostgreSQL

  5. Apakah ada cara untuk menggunakan ARRAY di Entity Framework + PostgreSql