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