我正试图执行此查询并得到错误代码:1175使用正在使用安全模式,并且您尝试更新没有where子句的表。
这是查询
set @email = 'foo@bar.com';
UPDATE user SET date_of_birth = '1985-10-01'
WHERE email_id = @email;
我不想禁用安全模式。
答案 0 :(得分:1)
由于您不想在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;