2011-11-18 52 views
1

我有一個兩列的表。一個是auto_increment,如columnA,而另一個是非auto_increment,如columnB。我想在columnB執行兩種類型的插入操作:MySQL中非auto_increment列的原子增量

  1. 插入一個常數(對於故意重複)
  2. 插入MAX(columnB)+ 1(這個一定不會造成任何的重複)

操作1很簡單,但在操作2中可以複製,因爲操作不是完全原子的。我打算使用下面的SQL:

插入表(columnB)選擇MAX(columnB)+1從表

如果多個用戶打在完全相同的時間上面的SQL,就會造成重複。我想知道如何使聲明完全原子化。

還有一件事,如果你建議表鎖定有無延遲的插入,而不是由於表被鎖定而返回錯誤?

回答

0

如果需要,您可以編寫一個自動遞增列B的觸發器。