为什么MySQL在调用UPDATE过程WITH where子句后使用主键返回1175代码?

时间:2017-02-04 21:30:22

标签: mysql stored-procedures

我知道我可以取消选中“安全更新”模式,但我想了解为什么MySQL服务器即使在所有内容看起来都正确的情况下也会返回此错误?

我正在尝试调用更新过程以使用语句

更新表country中的行
    call sellcontroller.country_update(1, 'United Kingdom', 'GB', 'GBR', 'GBR');

但它抛出异常“错误代码:1175。您正在使用安全更新模式,并且您尝试更新没有使用KEY列的WHERE的表。” 我肯定肯定我正在使用带表主键和正确数据类型的WHERE子句。而在程序之外使用的更多相同的更新语句也能正常工作。

程序代码是

CREATE PROCEDURE `country_update` (
  in idCountry int(6),
  in nameCountry varchar(255),
  in codeISO2 varchar(2),
  in codeISO3 varchar(3),
  in codeCitizen varchar(5))  
BEGIN
  UPDATE `sellcontroller`.`country`
  SET
    `nameCountry` = nameCountry,
    `codeISO2` = codeISO2,
    `codeISO3` = codeISO3,
    `codeCitizen` = codeCitizen
  WHERE `idCountry` = idCountry;
END

现在的表创建语句是

CREATE TABLE `country` (
`idCountry` int(6) NOT NULL AUTO_INCREMENT,
`nameCountry` varchar(255) DEFAULT NULL,
`codeISO2` varchar(2) DEFAULT NULL,
`codeISO3` varchar(3) DEFAULT NULL',
`codeCitizen` varchar(5) DEFAULT NULL,
PRIMARY KEY (`idCountry`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

0 个答案:

没有答案