我有下面的表更改脚本,它添加了一个计算机列,其中组合了被定义为大整数的国家/地区代码和移动设备(不要问为什么)
alter table schema.clients
add phone varchar(50) null;
update schema.clients
set phone = Concat(trim(cast(country_code as char(10))), trim(cast(mobile as char(20))) )
where country_code is not null and mobile is not null;
create unique index idx_phone on schema.clients(id, phone);
每当我通过 mySQl Workbench 运行此脚本时,我都会收到以下错误:
错误代码:1175。您正在使用安全更新模式,并且您试图 更新没有使用 KEY 列的 WHERE 的表。 禁用 安全模式,在“首选项”->“SQL 编辑器”中切换该选项,然后 重新连接。
我的脚本有什么问题,我该如何纠正它?
听起来您已打开“安全更新”。此功能旨在保护新用户免受自身侵害,打开后,where 子句中不包含唯一键或主键的所有更新(或删除)都将失败。这可以防止人们意外地完全忽略 where 子句并意外地发出不受限制的更新或删除,它的目的是有用的,但我自己从未发现它有帮助。
修复方法是在 SQL 客户端中禁用此选项。
请参阅 https://dev.mysql.com/doc/refman/8.4/en/mysql-tips.html#safe-updates 了解更多信息。