Код SQL для INSERT при проверке нескольких ключей на наличие дубликатов - PullRequest
0 голосов
/ 19 марта 2012

У меня есть следующая таблица:

CREATE TABLE IF NOT EXISTS `customer_list` (
   `id` INT AUTO_INCREMENT,
   `first_name` char(4) NOT NULL,
   `last_name` varchar(80) NOT NULL,
   `phone` varchar(50) NOT NULL,
   `province` varchar(50) NOT NULL,
   `country` varchar(30) NOT NULL,
   `start_date` TIMESTAMP NOT NULL,
   `end_date` TIMESTAMP NOT NULL,
   PRIMARY KEY (id)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Я хочу иметь возможность вставлять в эту таблицу с единственным ограничением, что first_name, last_name и phone не могут быть одинаковыми.Если они одинаковые, я хочу, чтобы возвращалась какая-то ошибка, чтобы предупредить конечного пользователя о том, что запись уже существует - действие вставки / обновления / замены не выполняется.

Ключом здесь является оператор INSERT, который должен как-то проверить 3поля для дублирования.Ошибка должна возвращаться, только если ВСЕ 3 поля являются дубликатами.IE.1 или 2 из 3 могут быть дубликатами и могут быть введены.

Возможно ли это с одним оператором INSERT?

1 Ответ

1 голос
/ 19 марта 2012

Попробуйте:

alter table customer_list add unique index(first_name, last_name, phone);
...