1

自動インクリメントとして ID d_deviceId を持つテーブル devicedetails があります。最初の ID(つまり 0) を削除すると、次のエントリを ID 値 0 に挿入する必要があります。

これをMySQLに実装するにはどうすればよいですか。

他の ID (たとえば 5) を削除する場合は、次のクエリを使用します。

SELECT d_deviceId + 1 FROM devicedetails d1 WHERE NOT EXISTS 
(SELECT 1 FROM devicedetails d2 WHERE d2.d_deviceId = d1.d_deviceId + 1) limit 0,1

これから、最初の ID を除く次の再利用可能な ID を取得します。

誰でも方法を提案しますか?

4

1 に答える 1

3

そのクエリの使用を停止します。同時実行性が高いと、誤った結果が得られます。AUTO_INCREMENT代わりに列のプロパティを使用してください。d_deviceId行が挿入されるたびに、次の未使用の値が列に自動的に割り当てられます。

これにはd_deviceId、テーブルの主キーとして構成する必要があります。しかし、それはおそらくすでにそうなっているはずです。

http://dev.mysql.com/doc/refman/5.5/en/example-auto-increment.html

于 2012-08-16T04:18:33.450 に答える