Оператор INSERT для таблицы MySQL - PullRequest
0 голосов
/ 07 февраля 2012
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 INTO MyTable (Name) VALUES (Name='xxx')

Проблема в том, что оба оператора INSERT создают запись (4, 0 ). Почему 0 вместо "ххх"?

ОБНОВЛЕНИЕ: первичный ключ изменен.

Ответы [ 6 ]

4 голосов
/ 07 февраля 2012

Это должно сделать работу:

INSERT INTO MyTable (ID, Name) VALUES (4, 'xxx')
2 голосов
/ 07 февраля 2012

Поскольку выражение Name='xxx' является ложным, следовательно, оценивается как ноль.

Вы используете метод column=expression, используйте в выражениях 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')
2 голосов
/ 07 февраля 2012

Я почти уверен, что это будет примерно так, вместо этого ...

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

Нет необходимости в части Name=, так как вы уже указали, какаястолбец, в который вы хотите вставить первое определение (Name).

0 голосов
/ 07 февраля 2012

Попробуйте это

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

Для получения дополнительной информации просто перейдите по этой ссылке

0 голосов
/ 07 февраля 2012

Это потому, что вы должны упомянуть имя столбца в части значений. А также потому, что вы не указали свой первичный ключ правильно (AirlinesID не является частью списка полей)

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 голосов
/ 07 февраля 2012

Является ли этот синтаксис Name='xxx' допустимым? Никогда не видел его раньше, я предполагаю, что он рассматривает его как литерал без кавычек, пытается преобразовать его в число и выдает 0? Я совсем не уверен

Попробуйте это:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...