У вас нет. С:
INSERT INTO table_rel (ID, player, team, status) ...
Вы обязуетесь предоставить ВСЕ перечисленные значения. Затем с
... VALUES (1,1,1,0), (2,3,1,1)
ON DUPLICATE KEY UPDATE status=VALUES(status);
вы предоставляете фактические значения, ID
включены (даже для новых записей). В этом случае, если нет ID=1
или ID=2
, запись будет создана, в противном случае для дубликатов ключей value
будет перезаписана.
Другим решением, если вы не хотите, чтобы указать ключ для новых записей, то вы должны использовать другое заявление (обратите внимание на отсутствующий столбец):
INSERT INTO table_rel (player, team, status) VALUES (1,1,0), (3,1,1)
при условии, что table_rel
имеет AUTO_INCREMENT
опцию ID
(на всякий случай: ALTER TABLE table_rel MODIFY ID INTEGER NOT NULL AUTO_INCREMENT;
).
UPDATE: Опираясь на AUTO_INCREMENT
вы можете предоставить NULL
ключ и дайте двигателю создать новый ключ для вас. См. spencer7593's answer для более полного описания.
для auto_incs просто не имеют заполнителей. skip em – Drew
... или укажите значение NULL, либо используя ключевое слово NULL, либо выражение, которое оценивает значение NULL. См. Мой ответ для демонстрации. – spencer7593