2012-08-14 57 views
0

我想自動遞增基於art_userid的下表中的art_id,這是可能的,而無需編寫任何額外的PHP代碼? gen_id必須保留並且不能被刪除。我使用MySQL和PHP自動遞增兩列

CREATE TABLE `articles` (
     `gen_id` INT(10) NULL AUTO_INCREMENT, 
     `art_id` TINYINT(3) NULL DEFAULT '0', 
     `art_userid` INT(10) NULL DEFAULT '0', 
     `art_title` VARCHAR(150) NULL DEFAULT NULL, 
     PRIMARY KEY (`gen_id`) 

所以在最後,如果用戶1貼出了一篇文章,他art_id將爲1下一個他的職位將有ID爲2

但是,如果用戶2貼和文章,他的art_id將再次爲1。他發佈的下一個會有id 2.不是第一個用戶art_id的延續。

gen_id | art_id | art_userid | art_title 
----------------------------------------- 
1   1  1   Title A 
2   2  1   Title B 
3   1  2   Title A 
4   2  2   Title B 
5   3  1   Title A 
+0

在這種情況下,您始終可以使用觸發器。 http://dev.mysql.com/doc//refman/5.0/zh-CN/create-trigger.html – Shubhansh 2012-08-14 05:45:06

+1

閱讀MyISAM表中的章節http://dev.mysql.com/doc/refman/5.0/en/example -auto-increment.html – 2012-08-14 05:46:03

+0

我聽說使用UNIQUE KEY會有幫助... – Norman 2012-08-14 07:08:27

回答

0

那麼,我有點sol把它,但少了一列。引擎類型需要是MyIsam。然後做一個創造這樣的:

CREATE TABLE `articles` (
    `art_id` INT(10) NOT NULL AUTO_INCREMENT, 
    `art_userid` INT(10) NOT NULL DEFAULT '0', 
    PRIMARY KEY (`art_userid`, `art_id`) 
) 
COLLATE='utf8_general_ci' 
ENGINE=MyISAM; 

然後,當你插入art_userid,你會得到art_id從1開始每個用戶的獨特價值。

0

您增加art_id的策略與自動增量不同。所以你不能在查詢中使用默認的。但是您可以編寫TRIGGER,它將使用art_userid將art_id更新爲INSERT

0

在這種情況下,你應該做一個鏈接用戶和文章與每個ID的表。

因爲這裏沒有自動增量做的,它只是一個數據管理:)

問候

0

更常見的做法是

CREATE TABLE `articles` (
     `id` INT AUTO_INCREMENT, -- entry in table 
     `gen_id` INT(10) NULL , 
     `art_id` TINYINT(3) NULL DEFAULT '0', 
     `art_userid` INT(10) NULL DEFAULT '0', 
     `art_title` VARCHAR(150) NULL DEFAULT NULL, 
     PRIMARY KEY(`id`) 
) 

使用id column表,所以你specifie項通過查詢增加用戶的總文章數 UPDATE total_articles SET total_articles=total_articles+1 WHERE userid=1