2017-05-11 32 views
0

將節點js中的數據插入和更新到postgresql中如果數據已經存在於數據庫中並且「INSERT」即創建一個新的user_Id並使用IF條件插入數據,那麼我必須「更新」postgresql中的數據。我試過這個,但我沒有得到輸出。如果你知道,請幫助我。如何使用條件

if(data.Details){ 
    db.query('UPDATE Details SET fullName = $2,address= $3,phone = $4 WHERE user_id = $1 RETURNING *', [query, data.Details.fullName, data.Details.address, data.Details.phone],function(err,details) { 
       if (err) return callback(new Error('error')); 
      }) 
}else{ 
db.query('INSERT INTO Details(user_id,fullName,address,phone) VALUES($1,$2,$3,$4) RETURNING *', [query, data.Details.fullName, data.Details.address, data.Details.phone],function(err,details) { 
           if (err) return callback(new Error('error')); 

          }) 
} 
+2

可能重複[插入,在PostgreSQL的重複更新?](http://stackoverflow.com/questions/1109061/insert-on-duplicate-update-in-postgresql) –

回答

1

如果您想要看起來,也可以在Postgres 9.5及更高版本中使用UPSERT/ON CONFLICT

這是設計這個確切的使用情況,並執行作爲一個單一的「指令」,而不是什麼是否存在做一個查詢檢查,而另一個在雙方交易以更新或插入。

+0

實際上upsert比手動檢查更好。因爲在您「檢查/選擇」記錄之後,另一個請求或客戶端可以在此會話之前插入它。 – ncank