我的表是這樣的:如何在mysql數據庫中生成序列號?
表1:
sr no. | id | name
ID是這裏的主鍵。 我想sr no.
是循環的。
我應該給sr no.
字段賦予什麼樣的屬性?
比如我有5條與sr no
1,2,3,4,5和1,2,3,4,5 id
我和刪除記錄3次,然後id
將是1,2,4,5和sr no.
將是1,2,3,4 sr no
不應該失去其爭議。
我的表是這樣的:如何在mysql數據庫中生成序列號?
表1:
sr no. | id | name
ID是這裏的主鍵。 我想sr no.
是循環的。
我應該給sr no.
字段賦予什麼樣的屬性?
比如我有5條與sr no
1,2,3,4,5和1,2,3,4,5 id
我和刪除記錄3次,然後id
將是1,2,4,5和sr no.
將是1,2,3,4 sr no
不應該失去其爭議。
SELECT @a:[email protected]+1 serial_number,
name FROM table1,
(SELECT @a:= 0) AS a;
你剛剛錯過了'通過ID訂購' – 2013-02-27 12:07:56
id
已經是您的主鍵,那麼您需要什麼sr no.
?會建議忘記它。
如果你確實需要它,請參閱我的回答here爲什麼這是一個非常糟糕的主意。最重要的原因:
當你刪除一行時,MySQL不會自動減少 自動增量值。這些原因都斷了數據的完整性
- 危險(想象多個用戶執行刪除或插入...一倍,可能會出現的條目或更糟)當您使用主從複製或交易可能會出現
- 錯誤
- 和等等......
沒有必要擔心差距。
要回答你的問題該怎麼做,只需在列定義中添加auto_increment
並將其包含在主鍵中。
我不知道sr no。的真正目的。
但是你可以創建Trigger
上DELETE操作此表,現在讓SR沒有由1
例如遞減你可以更新它比目前更大的ID記錄你可以寫在下面觸發器SQL,
UPDATE table1 SET sr_no = sr_no -1 WHERE id > XYZ;
「我想Sr否。是循環的。」你那是什麼意思? – fancyPants 2013-02-27 11:24:29
它應該是這樣的:1,2,3,4,5,6 ..... 如果有任何記錄被刪除,那麼它應該再次更新,如1,2,3,4,5 ... 它應該是不像1,2,3,5,6 .... if 4 no。記錄被刪除 – 2013-02-27 11:25:01
那麼'id'和'sr no.'有什麼區別? – Lars 2013-02-27 11:25:41