PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Câu lệnh INSERT tùy chọn trong chuỗi giao dịch sử dụng NodeJS và Postgres

Quản lý giao dịch thủ công là một con đường nguy hiểm, hãy cố gắng tránh xa điều đó!;)

Dưới đây là cách thực hiện đúng cách, với sự trợ giúp của pg-promise:

Hàm
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
        });
}

Hoặc, nếu bạn thích cú pháp 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
        });
}

CẬP NHẬT

Đã thay thế trình tạo ES6 bằng ES7 async / await trong ví dụ, vì pg-promise đã ngừng hỗ trợ trình tạo ES6 từ phiên bản 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. Sử dụng tham số làm tên cột trong hàm Postgres

  2. Nhận Id từ CHÈN có điều kiện

  3. Trình tự PostgreSQL dựa trên một cột khác

  4. pg_ctl Mẹo và Thủ thuật

  5. Gấu trúc ghi khung dữ liệu vào lược đồ postgresql khác