0
我有这个表relations
MySQL的插入,增量列值
ID Name Parent Pos
================================
1 Alex 1 1
2 Mary 1 2
3 John 1 3
4 Doe 2 1
5 Bob 2 2
6 Kate 2 3
之前,我做的insert
查询,我选择Parent
ID和获得最后Pos
位置,然后通过1
$data = $DB2->query("SELECT * FROM relations
WHERE Parent='1' ORDER BY `Pos` DESC LIMIT 1");
$results = $data->result_array();
foreach($results as $row) {
$pos = $row['Pos']; //last position
}
$pos = $pos + 1;
$DB2->query("INSERT IGNORE INTO relations (Name,Parent,Pos) VALUES('test',1,'$pos')");
有没有一种方法可以自动递增Pos
列/ Parent
列?或者,我目前的方式最有效率?
是的,我很担心比赛条件。您的方法是避免竞争条件的最佳方法吗? – mdnba50
@ mdnba50。 。 。 '(Parent,Pos)'上的唯一索引可能就足够了,只要应用程序代码可以从失败的插入中恢复即可。否则,你将不得不进入锁定状态。 –