SQL INSERT, если имя пользователя не существует - PullRequest
0 голосов
/ 16 июня 2020

что не так с этим запросом:

INSERT INTO `customers`(`username`, `password`) 
            VALUES (:username, :password)
            WHERE NOT EXISTS (
                SELECT `username` FROM `customers` WHERE `username`=:username
            );

1 Ответ

0 голосов
/ 16 июня 2020

Что не так с запросом? Он генерирует синтаксическую ошибку.

Если вы хотите предотвратить дублирование, используйте уникальное ограничение в таблице:

ALTER TABLE customers ADD CONSTRAINT unq_customers_username UNIQUE (username);

Затем, если вы попытаетесь вставить повторяющееся значение, используя

INSERT INTO `customers`(`username`, `password`) 
     VALUES (:username, :password);

Вы получите сообщение об ошибке нарушения ограничения.

Часто в этом случае вы действительно хотите обновить пароль в существующей строке. Вы можете сделать это с помощью расширения MySQL ON DUPLICATE KEY UPDATE:

INSERT INTO `customers`(`username`, `password`) 
     VALUES (:username, :password)
     ON DUPLICATE KEY UPDATE password = :password;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...