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)'上的唯一索引可能就足夠了,只要應用程序代碼可以從失敗的插入中恢復即可。否則,你將不得不進入鎖定狀態。 –