SQL грамматика для вставки записи и игнорирования существует с индексом вместо первичного ключа - PullRequest
0 голосов
/ 10 января 2012

У меня есть таблица со структурой: id(INT, PK), entryid(INT), date(INT), region(CHAR), location(ENUM), views(INT).Все поля, кроме идентификатора, не являются уникальными.

Как вставить запись, чтобы при наличии одинакового entryid,date,region,location игнорировать, иначе вставить в таблицу?

Кстати, яиспользуя mysql.

1 Ответ

4 голосов
/ 10 января 2012

Да, для mysql есть специальная версия оператора вставки:

INSERT INTO table
VALUES (...)
ON DUPLICATE KEY UPDATE entryid = ?, etc -- this modifier will do the trick

Обратитесь к Ввод MySQL для этого синтаксиса для полного объяснения

Edit:

Это поведение работает при идентичности первичного ключа . Чтобы он работал на нескольких столбцах, вам нужен первичный ключ из нескольких столбцов, который вы бы определили для своей таблицы следующим образом:

create table mytable (
    entryid int,
    date int,
    region char,
    location enum ('a', 'b', 'c'),
    views int,
    primary key (entryid, date, region, location) -- list your key field like this
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...