2011-10-26 87 views
1

我有解決方案,我需要的是ID在一個表開始,每月從1我想用一個月的名字作爲ID自動incerement在一起的主鍵。我錯了嗎?有人有任何想法嗎?自動遞增1每個月開始在MySQL和PHP

+0

您可以與MySQL的cron作業嘗試。 –

+0

明年要做什麼?將會有相同的月份。試着僅僅處理自動提取。 – Devart

+0

明年可能會做同樣的事情,與月 – mdakic

回答

2

例如用MyISAM表:

CREATE TABLE table1(
    yearmonth_id INT(11) NOT NULL, -- combination of year and month 
    id INT(11) NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (yearmonth_id, id) 
) 
ENGINE = MYISAM; 

INSERT INTO table1 VALUES(201110, NULL); 
INSERT INTO table1 VALUES(201110, NULL); 
INSERT INTO table1 VALUES(201110, NULL); 

INSERT INTO table1 VALUES(201112, NULL); 
INSERT INTO table1 VALUES(201112, NULL); 
INSERT INTO table1 VALUES(201112, NULL); 

INSERT INTO table1 VALUES(201201, NULL); 
INSERT INTO table1 VALUES(201201, NULL); 
INSERT INTO table1 VALUES(201201, NULL); 

SELECT * FROM table1; 
+--------------+----+ 
| yearmonth_id | id | 
+--------------+----+ 
|  201110 | 1 | 
|  201110 | 2 | 
|  201110 | 3 | 
|  201112 | 1 | 
|  201112 | 2 | 
|  201112 | 3 | 
|  201201 | 1 | 
|  201201 | 2 | 
|  201201 | 3 | 
+--------------+----+ 
+0

非常感謝,你給了我一個想法如何解決這個問題。 – mdakic

+0

我有問題時,插入數據到表中,第一列yearmonth_id和表中的第二列ID插入第四和第五列數據,而不是第三和第四...有人可以幫忙嗎? – mdakic

+0

你能舉一個例子來重現它(INSERT語句,輸出)嗎? – Devart

1

我錯了呢?

沒錯。

從注:註釋應該是一個答案。這裏引用它:

爲什麼每個人都希望與AUTO_INCREMENT篡改創造自己的觸發和執行邏輯的方式,而不是..只是不與主鍵亂動,這是從多個角度是一個壞主意。創建一個觸發器在其他列中增加數字,並讓主鍵執行其操作。

每一位新手網絡程序員都應該把它刻在他們的桌子上,每天三次朗讀。

0

與主鍵的事情是,他們需要簡單,一般。大多數系統使用數字的原因是因爲在代碼中,只需傳遞數字即可表示數據,而不必要求所有數據(如果不需要)。

你可以有一列是一個月一年的字符串,另一個是數字自動遞增一個多列主鍵,然後自動增量將自動重新使用號碼月份發生變化時。這具有與表格定義直接相關的優點,這使得移動系統更容易。

來源:enter link description here