2012-08-14 6 views
0

나는 art_id를 기반으로 아래 표에서 art_id를 자동 증가 시키려고합니다. 추가 PHP 코드를 작성하지 않고 이것이 가능합니까? gen_id는 남아 있어야하며 제거 할 수 없습니다. 사용자 1은 기사를 게시하는 경우 나, 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`) 

을 사용하고, 자신의 art_id 그가 게시물 ID 2.

그러나 만약 사용자가있을 것 1. 다음의 하나가 될 것입니다 2 게시 및 기사, 그의 art_id 1 다시 것입니다. 그가 게시 한 다음 ID는 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/en/create-trigger.html – Shubhansh

+1

MyISAM 테이블 http://dev.mysql.com/doc/refman/5.0/en/example에 대한 섹션을 읽어보십시오. -auto-increment.html –

+0

UNIQUE KEY를 사용하는 것이 도움이된다고 들었습니다 ... – Norman

답변

0

글쎄, 나는 좀 솔 그것은 하나의 칼럼을 사용하여 그것을 승낙했다. 엔진 유형은 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를 삽입 할 때, 당신은 각 사용자에 대해 1부터 art_id에 대해 고유 한 값을 얻을 것이다 : 그럼 이런 식으로 만들려면 어떻게해야합니까.

0

art_id를 늘리려는 전략은 자동 증가와 다릅니다. 그래서 당신은 쿼리에서 디폴트 값을 사용할 수 없습니다. 하지만 TRIGGER으로 작성하면 art_id를 사용하여 INSERT의 art_id를 업데이트합니다.

0

사용자와 기사를 각 ID로 연결하는 표를 사용해야합니다. 할 수없는 자동 증가가없는 여기에 있기 때문에

, 그냥 데이터 관리 :

관해서입니다

0

더 일반적인 방법은 당신이 항목을 특별한 경우의 수 있도록 테이블에 id column를 사용

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`) 
) 

입니다 질의에 의한 사용자의 총 기사 수 증가 UPDATE total_articles SET total_articles=total_articles+1 WHERE userid=1