2010-06-01 2 views
0

나는 어떤 점에서 나는 지금까지 성취 할 수없는 것을 진짜 간단하게 필요로한다.정수 대리 키?

나는 놀랍게도 Google에 답변하지 못했습니다. 다른 테이블의 항목에 고유하게 번호를 매겨야합니다. 나는 MySQL의 AUTO INCREMENT에 대해 알고 있으며 관련 될 것입니다. 내가

같은 테이블을 가지고 있다면

표 예

 
    ID - INTEGER 
    FIRST_NAME - VARCHAR(45) 
    LAST_NAME - VARCHAR(45) 
    PHONE - VARCHAR(45) 
    CITY - VARCHAR(45) 
    STATE - VARCHAR(45) 
    ZIP - VARCHAR(45) 

이 ID가 자동 증가 할 때마다 정수는 테이블에 대한 설정이 될 것를 다음과 같이 내 상황이 될 것이다 항목이 테이블에 삽입됩니다. 필요한 것은 데이터베이스에 데이터를 삽입 할 때이 필드를 고려하고 싶지 않다는 것입니다.

 INSERT INTO EXAMPLE VALUES (2,'JOHN','SMITH',333-333-3333,'NORTH POLE'....

내가 떠날 수 : 나의 이해에서 이것은 내가 자동으로 증가하는 데이터베이스를 알 수 있습니다 내가 대신,

그래서 INSERT 문에 포함 할 필요가 없습니다, 대리 열쇠가 될 것입니다 첫 번째 ID 열 출력 및 단지 같은 것을 쓰기 : 이것은 매우 통신이다 나는 ID 열을 정의 할 필요가없는 것입니다

INSERT INTO EXAMPLE VALUES ('JOHN','SMITH'.....etc)

공지 사항 ... 내가 아는

을 해야 할 일이 있지만, 어떤 이유로 나는 그 일에 몰두할 수 없습니다.

나는 명확히하기 위해 MySQL을 사용하고 있습니다.

덕분에 많은

답변

1

이 시도가 :

INSERT INTO EXAMPLE VALUES ('JOHN','SMITH'.....etc) 

... 테이블의 열 수는 지정된 열 수와 일치하지 않기 때문에, MySQL의 오류 # 1136를 반환합니다 VALUES 절에 있습니다. 따라서 두 가지 옵션이 있습니다 :

  1. NULL을 사용하여 자동 증가 열 값을 채우십시오. IE :

    INSERT INTO EXAMPLE VALUES (NULL, 'JOHN','SMITH'.....etc) 
    
  2. 값이 제공되는 테이블의 열 목록을 지정하십시오.IE는 : 당신이 표 다음에 열을 나열하지 않는 경우

    INSERT INTO EXAMPLE 
        (FIRST_NAME, LAST_NAME, PHONE, CITY, STATE, ZIP) 
    VALUES 
        ('JOHN','SMITH'.....etc) 
    
+0

을 지정하면 ID 열을 AUTO INCREMENT로 지정하면 올바르게 처리 할 수 ​​있습니까? – TheJediCowboy

+0

@CitadelCSAlum : 예, ID 열이 AUTOINCREMENT로 설정된 경우 - 제공된 예제를 사용하십시오. –

+0

첫 번째 옵션을 사용했는데 내 요구 사항에 가장 잘 어울렸고 최소한의 리팩터링이 필요하다고 생각합니다. 고마워! – TheJediCowboy

3

here를 그림과 같이 IDauto_increment을 확인합니다. 행을 삽입 할 때 auto_increment 필드의 값을 제공 할 필요가 없으면 DB가이를 제공합니다. 이 경우에도 필드의 이름을 제공하기 위해 여전히 insert 구문을 사용해야하며, ID 필드를 제외하면됩니다.

1

mysql에 대해 잘 모르겠지만 SQL Server에서는 삽입 할 필드를 지정해야합니다 (모든 경우에 모범 사례로 수행해야 함).

insert into Example(field1, field2) 
values ('John', 'Smith') 
+1

, 테이블 내의 열의 서수 위치에 의존하고 있습니다. 코드가 예기치 않게 끊어 질 수 있으므로 결코 좋은 생각이 아닙니다. –

+2

더 나빠진 경우 (즉, 오류 메시지가 표시되지 않음) 데이터가 손상된 장소에 표시되지 않습니다. 이것은 누군가가 알아 차리기 전에 잠시 동안 계속 될 수 있으며 이런 식으로 영향을받은 나쁜 데이터를 고치는 것은 정말로 어렵습니다. 이 두 예제 중 어느 하나에 대해 – HLGEM

관련 문제