2016-02-23 22 views
2

我要每天重置次數,Mysql的復位數字每天

表:

CREATE TABLE tickets(
    ticketId varchar(10), 
    moviesname text, 
    date DATE, 
    seatnumber INT(5), 
    PRIMARY KEY(ticketId)); 

有什麼SQL語法每日重置ID?

+0

所以你想重新設置一個像下面這樣的自動增量字段? http://stackoverflow.com/questions/8923114/how-to-reset-auto-increment-in-mysql – xQbert

+0

但是,如何ID不是主要的,而不是自動增量模式? –

+1

那麼你現在如何確定id的價值應該是什麼? – Shadow

回答

1

我看到2種可能的方法:

1.使用MyISAM表的特殊auto_increment特點:

對於MyISAM表,你可以在一個多列索引在二次 列指定AUTO_INCREMENT 。在這種情況下,AUTO_INCREMENT列的生成值 計算爲 MAX(auto_increment_column)+ 1 WHERE prefix = given-prefix。

  • 確保ticket表是myisam。
  • tickeid柱必須AUTO_INCREMENT
  • 變化的主鍵是日期,tickeid。 列的順序是最重要的!

2.蜜糖您目前最大()查詢,以確定下一個值

  • 更改主鍵是日期,tickeid。這些字段的順序並不重要。由於您想每天重新開始編號,這將導致重複的索引值錯誤消息,因此您不能讓ticketid成爲單獨的pk。
  • 使用下面的查詢來獲取下一個ticketid:

    select coalesce(max(ticketid),1) from tickets where date=curdate()

的地方標準,確保每天ticketid值將重新啓動。 coalesce()用於每天將第一個數字指定爲第一個id,因爲如果沒有滿足where條件的記錄,max()將返回null。

但是,此解決方案的風險是多個語句同時執行可能會產生相同的ID。您可以通過在應用程序代碼中進行適當的錯誤處理來處理這種情況(例如,嘗試再次插入),或者使用顯式鎖將插入序列化到票據表中。

+0

所以有幫助,這就是我的意思。 –