Вставить или обновить (без ключей) - PullRequest
0 голосов
/ 03 марта 2011

У меня есть таблица с двумя полями.Может быть несколько строк с одинаковым значением каждого поля, но только одна строка, где оба значения одинаковы.

Хмм, это звучит не очень хорошо, поэтому вот несколько примеров:

good stuff
a, 1
a, 2
b, 1
b, 2  < ==== all are unique combinations

bad stuff
a, 1
a, 1 <=== this permutation should only occur once

Итак, как псевдокод: if no row exists with both columns of the give values, then UPDATE INSERT a new row (else, do nothing).

В таблице нет ключей (это не так?).Есть ли одна команда, чтобы сделать это, вроде INSERT IF NOT EXISTS?Или мне сначала нужно выполнить поиск, а затем решить, использовать ли INSERT?

Предпочтительное решение ODBC, хотя в настоящее время это только MySql

Ответы [ 2 ]

2 голосов
/ 03 марта 2011

Возможно, вы ищете INSERT ... ON DUPLICATE KEY UPDATE.(Обратите внимание, что должен иметь уникальный ключ в вашей таблице, чтобы это работало)

1 голос
/ 03 марта 2011
  1. Я не думаю, что вы ищете запрос upsert - он обновится, если будет найден ключ, иначе он вставит.
  2. Вы можете сделать более одного столбца первичным ключом. Это устанавливает уникальное ограничение для таблицы, которое не допускает дублирование вставок. В большинстве баз данных, однако, возникнет ошибка, поэтому если вы выполняете пакетное обновление / копирование, то ни одно из обновлений не будет зафиксировано.

В терминологии базы данных преобразование нескольких полей в первичный ключ называется составным / составным / объединенным ключом.

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