Обновление записи на основе значения в переменной в предложении WHERE - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь выполнить этот запрос и получаю код ошибки: 1175 используют безопасный режим, и вы пытались обновить таблицу без предложения where.

это запрос

set @email = 'foo@bar.com';
UPDATE user SET date_of_birth = '1985-10-01' 
WHERE email_id = @email;

Я не хочу отключать безопасный режим.

1 Ответ

0 голосов
/ 07 февраля 2019

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

set @email = 'foo@bar.com';
set @id =
(
    SELECT u.id
    FROM user u
    WHERE u.email_id = @email
);

UPDATE user SET date_of_birth = '1985-10-01' 
WHERE id = @id;

Или напрямую:

SET @id = 42;

UPDATE user SET date_of_birth = '1985-10-01' 
WHERE id = @id;

Или временно отключите безопасный режим (я выберу этот вариант):

set @email = 'foo@bar.com';

SET SQL_SAFE_UPDATES = 0;

UPDATE user SET date_of_birth = '1985-10-01' 
WHERE email_id = @email;

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