2012-02-07 5 views
0
CREATE TABLE IF NOT EXISTS `MyTable` (
    `ID` SMALLINT NOT NULL AUTO_INCREMENT, 
    `Name` VARCHAR(50) NOT NULL, 
    PRIMARY KEY (`ID`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

INSERT INTO MyTable (ID,Name) VALUES (ID=4,Name='xxx') 

또는INSERT 문은

INSERT INTO MyTable (Name) VALUES (Name='xxx') 

문제 모두 INSERT 문이 엔트리 (4, 0)을 생성한다는 것입니다. 왜 0 xxx "0 대신?

업데이트 : 기본 키가 변경되었습니다. 이 작업해야

+0

당신은을 지정 방문하여 추가 정보를 원하시면이

INSERT INTO MyTable (ID,Name) VALUES (4,xxx) 

시도 (airlineID는 필드 목록의 일부가 아닌) 존재하지도 않는 기본 키 (항공)이므로 테이블 만들기가 작동하지 않아야합니다. 또한 auto_increment를 사용할 때 값을 삽입 할 필요가 없습니다. –

답변

4

:

INSERT INTO MyTable (ID, Name) VALUES (4, 'xxx') 
+0

예제의 예문에서 오류가 발생하지 않은 이유는 무엇입니까? –

+0

귀하의 경우, paxdiablo의 게시물에서 말했듯이, column = expresion 메서드를 사용합니다.이 메서드는 baddly 쓰지 않지만 INSERT ... VALUES 문에서 0으로 평가됩니다. column = expression 메소드를 사용하려면 INSERT ... SET 문을 사용하십시오. –

2

내가 대신,이 같은 것 확신을 ...

INSERT INTO MyTable (Name) VALUES ('xxx')

Name= 부분에 대한 필요가 없습니다, 이후 첫 번째 (Name) 정의로 삽입 할 열을 이미 지정했습니다.

0

해당 구문은 Name='xxx'입니까? 전에는 그것을 보지 못했지만, 그것을 인용 부호없는 리터럴로보고 그것을 숫자로 변환하려고 시도하고 0으로오고 있다고 가정합니다. 모든

이 시도에 나는 확실하지 않다 다음 표현Name='xxx'이 거짓

INSERT INTO MyTable (Name) VALUES ('xxx')

2

때문에, 따라서 0으로 평가한다.

column=expression 메서드 사용은 here에 설명 된대로 on duplicate key update 절에 사용하고 삽입 기호의 "일반"섹션에는 사용하지 마십시오. 그 예는 다음과 같습니다

insert into mytable (col1,col2) values (1,2) 
    on duplicate key update col1 = col1 + 1 

당신은 구문을 사용해야합니다 : 당신이 값 부분의 열 이름을 언급해야하기 때문에

INSERT INTO MyTable (ID,Name) VALUES (4,'xxx') 
0

이입니다. 당신이 정확하게 당신에게 기본 키를 정의하지 않습니다도 있기 때문에

CREATE TABLE IF NOT EXISTS `MyTable` (
    `ID` SMALLINT NOT NULL AUTO_INCREMENT, 
    `Name` VARCHAR(50) NOT NULL, 
    PRIMARY KEY (`ID`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

INSERT INTO MyTable (ID,Name) VALUES (4,'xxx') 

INSERT INTO MyTable (Name) VALUES ('xxx')