0
我有以下簡單的表:將auto_increment值用作複合UID的一部分 - 有效的查詢方法?
僱員:
Name (VARCHAR), Increment (INT, auto increment), Uid (INT)
例如,在UID可以由與另一個標識符(服務器的例如MAC地址)級聯增量值的。
目前(使用節點mysql的綁定)我的Node.js應用程序創建一個新的行生成自動遞增值,則取該值:
var first_payload = {
name: "Example"
}
connection.query("INSERT INTO employees SET ?", first_payload, function(error, result){
var auto_increment_value = result.insertId; //Capture auto increment value
});
然後我採取自動遞增值,這個串聯與另一個標識符並插入行作爲Uid:
var second_payload = {
Uid: concatenated_auto_increment,
}
connection.query("INSERT INTO employees SET ? WHERE Increment = '"+auto_increment_valiue+"' ", second_payload, function(error, result){
//...
})
是否有更有效的方式來執行此操作?
如生成自動遞增值,然後在同一個查詢中創建Uid? 也許最初的查詢創建自動增量可能會返回一個直接指向該行的指針,以刪除第二個查詢來搜索表的需求?
[有是](http://stackoverflow.com/questions/5972446/insert-autoincrement-into-second-co lumn)是這種查詢的一個很好的例子。 – aring
@鏈接的頁面沒有幫助 - 它不是特定於node-mysql的,它沒有顯示如何完成我在單個查詢中描述的操作,而不是兩個。 –
Just FYI,line'connection.query(「INSERT INTO employees SET?WHERE Increment ='」+ auto_increment_valiue +「'」,second_payload,function(error,result){'could be'connection.query(「INSERT INTO employees SET ?WHERE Increment =?「,[second_payload,auto_increment_valiue],function(error,result){'。此外,如果您正在尋找一種方法在單個查詢中執行您想要的操作,我認爲這是不可能的。如果您的底層引擎支持它,您可能想要將這兩個SQL命令包裝在一個事務中。您可能不想保留一半的行。 – Dave