簡體   English   中英

自動遞增字段直到滿足特定條件mysql

[英]Autoincrementing a field till a certain condition is met mysql

我有下表

SNo Value Item

其中Sno是也存在於另一個表中的列。 現在,我需要的是一個自遞增字段,如果sno的值是一個常數,它將繼續遞增,然后返回到0,一旦sno的值更改,便再次開始遞增。 有什么辦法嗎?

可以說我有四列:

SNO |Value |Item | AUtoIncrementingField
1    344      a            0 
1    345      b            1 
1    346      c            2 
2    568      d            0 

因此,當我說插入此表時,SNO的值從原來的值更改為原來的值時,自動遞增字段的值應返回0。是否有任何內置方法來執行此操作,或在mysql之上編寫一些代碼為達到這個。 如果沒有,我還必須唯一地標識屬於某個sno值的每個值/項目嗎?

盡管這對InnoDB毫無幫助,但值得指出的是MyISAM本身就支持此功能。 使用AUTO_INCREMENT

MyISAM筆記

對於MyISAM表,可以在多列索引的第二列上指定AUTO_INCREMENT 在這種情況下,將為AUTO_INCREMENT列生成的值計算為MAX( auto_increment_column ) + 1 WHERE prefix= given-prefix 當您要將數據放入有序組中時,這很有用。

\n 創建表動物(\n     grp ENUM('fish','mammal','bird')NOT NULL,\n     id MEDIUMINT NOT NULL AUTO_INCREMENT,\n     名稱CHAR(30)NOT NULL,\n     主鍵(grp,id)\n )ENGINE = MyISAM;\n\n 將動物插入(grp,name)值\n     ('哺乳動物','狗'),('哺乳動物','貓'),\n     ('bird','penguin'),('fish','lax'),('mammal','whale'),\n     (“鳥”,“鴕鳥”);\n\n 從動物中選擇*按grp,id排序;\n

哪個返回:

\n + -------- + ---- + --------- +\n |  grp |  id |  名稱|\n + -------- + ---- + --------- +\n |  魚|  1 |  松懈\n |  哺乳動物|  1 |  狗|\n |  哺乳動物|  2 |  貓|\n |  哺乳動物|  3 |  鯨|\n |  鳥|  1 |  企鵝|\n |  鳥|  2 |  鴕鳥|\n + -------- + ---- + --------- +\n

在這種情況下(當AUTO_INCREMENT列是多列索引的一部分), AUTO_INCREMENT如果刪除的最大行值被重用AUTO_INCREMENT在任何一組值。 即使對於MyISAM表,通常不會重復使用AUTO_INCREMENT值,也會發生這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM