2012-02-07 106 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') 

對MySQL表的INSERT語句

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

的問題是,無論是INSERT語句產生條目(4 )。爲什麼而不是「xxx」?

更新:主鍵已更改。

+0

您指定主鍵甚至不存在(航空公司),所以表創建不應該工作。另外,使用auto_increment時不需要插入值。 – 2012-02-07 11:27:42

回答

4

這應該做的工作:

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

爲什麼我的例子中的語句沒有產生錯誤? – 2012-02-07 11:29:31

+0

因爲就你的情況而言,正如paxdiablo的帖子中所說的那樣,你可以使用column = expresion方法,該方法不會被baddly寫入,但在INSERT ... VALUES語句中被評估爲0。要使用column = expression方法,首選INSERT ... SET語句。 – 2012-02-07 11:39:59

2

我敢肯定,這將是這樣的事情,而不是...

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

無需爲Name=一部分,因爲您已經在第一個(Name)定義中指定了希望插入的列。

0

Name='xxx'的語法是否有效?從來沒有見過它,我認爲它看作是一個沒有引號的文字,試圖將其轉換爲一個數字,並提出0?我不知道在所有

試試這個:

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

2

因爲表達Name='xxx'是假的,因此評估爲零。

您使用的column=expression方法在on duplicate key update條款中使用,如here所述,不在「常規」插入部分。這方面的一個例子:

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

,你應該使用的語法:

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

這是因爲你必須提到在值部分的列名。而且還因爲你沒有正確地定義你的主鍵(airlineID不是字段列表的一部分)

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') 
0

試試這個

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

欲瞭解更多信息只需訪問該link