2011-10-26 2 views
1

나는 하나의 테이블에서 그 id를 필요로하는 솔루션을 가지고있다. 매월 1부터 매월 시작된다. id 자동 삽입과 함께 기본 키로 월 이름을 사용하려고 생각하고있다. 나는 틀린가? 누군가가 어떤 생각을 가지고 있습니까?자동 증가 매월 1에서 PHP로 시작 mysql에서

+0

당신은 MYSQL의 cron 작업으로 시도 할 수 있습니다. –

+0

내년에 무엇을해야합니까? 같은 달이있을 것입니다. 자동 응답을 처리하십시오. – Devart

+0

내년은 아마도 월간 – mdakic

답변

2

예 :

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가 4 번째와 5 번째 ... 3 번째 및 4 번째 컬럼 데이터 대신 삽입됩니다 ... 누군가 도움이 될 수 있습니까? – mdakic

+0

재현 할 예제를 표시 할 수 있습니까 (INSERT 문, 출력)? – Devart

1

나는 잘못된 방법일까요?

정확히.

N.B. 대답이어야합니다. 여기 인용 :

왜 모든 사람이 단지 기본 키 함부로 변경하지 않습니다 .. 자신의 트리거를 생성하고 로직에게 그들의 방법을 구현하는 대신 AUTO_INCREMENT을 조작하고 싶어, 그것은 여러 관점에서 나쁜 생각입니다. 다른 열의 숫자를 증가시키기위한 트리거를 생성하고 기본 키가 그 기능을 수행하게하십시오.

모든 초보자 프로그래머는 테이블에 새기고 하루에 3 번 소리내어 읽어야합니다.

0

기본 키가있는 항목은 일반적으로 간단해야한다는 것입니다. 대부분의 시스템에서 숫자를 사용하는 이유는 코드에서 숫자가 필요하지 않으면 모든 데이터를 반드시 요청하지 않고 데이터 조각을 나타 내기 위해 번호를 전달하기 때문입니다.

하나의 열이 월 - 연도 문자열이고 다른 하나가 숫자 자동 증가 인 다중 열 기본 키를 가질 수 있습니다. 자동 증가는 달이 바뀔 때 자동으로 숫자를 다시 사용합니다. 이것은 테이블 정의에 직접 연결되는 이점이있어서 시스템을 더 쉽게 옮길 수 있습니다.

출처 : MYISAM 테이블 enter link description here

관련 문제