2009-10-07 73 views
2

我認爲這比我上一個版本更清晰:有沒有辦法在MySQL的第二列上模擬auto_increment?

我有一個表已經有一個PK字段已經設置爲自動增量1。我想添加一個不以1開頭的新字段,而是從一個任意數字(認爲發票號碼)開始並自動遞增。顯然,每個表只能有一個具有該屬性的列。在一個查詢操作中,是否有辦法強制MySQL將該字段的最後(或最大)值增加1作爲新行中該列的值?

更新:我剛剛結束了使用id列作爲我需要的新值的基礎,並刪除了非必要的列。我的問題從來沒有得到答案,但我確實以此爲重新思考方法的提示,謝謝!

+0

您是否期望此列始終具有與主鍵相同的值? – 2009-10-07 20:16:57

+2

呃,除非你想玩增量或抵消,他們不會只有相同的價值? – jason 2009-10-07 20:17:16

+0

我想添加的新字段不會從1開始,而是某種特定的方案。所以,不,他們不會有同樣的價值。一個用於表格的內部會計,另一個用於業務邏輯。 – 2009-10-07 20:24:49

回答

1

這不是一個真正的答案,因爲你問你如何在一個SQL語句中實現你的目標,但是你可以在表中定義一個觸發器來填充第二列,生成函數。這將確保此列的值是真正唯一的(如果您正在執行max(value)或類似操作,則不是這樣),因爲函數的調用將排隊。

或者,如果您確實需要顯示相同值的兩列,請創建一個視圖,該視圖使用不同的別名引用同一列兩次。

0

如果它在同一張表中,您可以將您想要的列設置爲您的唯一列,但它們具有相同的值,這似乎毫無意義>您確定需要這個嗎?

1

具有相同價值的兩列似乎很愚蠢,但在這裏你走了。

create trigger foo_before_insert 
    before insert on my_table 
    for each row set 
    new.second_auto_column = first_auto_column 
; 
0

如果你能告訴我們該領域的用途,這將更容易回答。通常有更好的方法來實現相同的業務需求。無論你做什麼都是黑客,你最終會花很多時間處理意想不到的後果。

相關問題