вставить - где не существует - PullRequest
4 голосов
/ 01 августа 2011

Я хотел бы вставить запись в таблицу, если запись с таким доменным именем уже не существует. Следующий SQL должен достичь этого, но получает ошибку.

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

Почему я получаю ошибку в этом запросе mySQL?

insert into domain (name) 
values ('domain.com.au') 
WHERE NOT EXISTS 
(
    select name 
    from domain 
    where name = 'domain.com.au'
);

Оба запроса при разделении работают нормально, а когда вместе - нет.

Ответы [ 3 ]

6 голосов
/ 01 августа 2011

Пусть ваша база данных справится с этим за вас.Используйте уникальный индекс для name, и ваш INSERT не удастся, если вы попытаетесь вставить дубликат.

CREATE UNIQUE INDEX idx_name ON domain (name)
0 голосов
/ 01 августа 2011

Какую ошибку вы получаете?

Полагаю, что выбор внутри 'где не существует' не разрешен.

0 голосов
/ 01 августа 2011

Вы не можете объединить WHERE с предложением INSERT.Вместо этого используйте REPLACE INTO.

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