Mysql - игнорировать предупреждение при вставке новой строки, если существовала одна и та же - PullRequest
0 голосов
/ 10 декабря 2018

Это мой первый вопрос в stackoverflow, и я не являюсь носителем английского языка.Если я не прошу хорошо, потерпите меня, пожалуйста.

Предположим, у меня есть таблица, _id является первичным ключом.

| _id | value1 | value2 |
|-----|--------|--------|
|   1 |  apple | banana |
|   2 | orange |  melon |

Я хочу, чтобы:

  • Если я попытаюсь сделать запрос INSERT INTO table_name (_id, value1, value2) VALUES (1, 'apple', 'banana'), то ничего не произойдет, потому что весь ряд одинаков.
  • Если я попытаюсь сделать запрос INSERT INTO table_name (_id, value1, value2) VALUES (2, 'apple', 'tomato'), я получу предупреждение, поскольку существует хотя бы один столбец, не равный.работать?

1 Ответ

0 голосов
/ 10 декабря 2018

Похоже, вам нужен уникальный индекс для _id:

create unique index unq_table_id on table(_id);

Тогда вы не сможете вставить другую строку с таким же _id.Вы можете создать уникальные индексы для value1 и value2, если вы также хотите, чтобы они были уникальными.

Поведение не совсем то, что вы указываете.Если вы попытаетесь вставить любую строку с существующим _id - независимо от значений в других столбцах - тогда произойдет ошибка.Вы можете обойти ошибку, используя insert ignore или on duplicate key update, если хотите.

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