レコードIDに基づいてテーブルレコードを更新するストアドプロシージャを作成しています。ここに私のコードは、(更新セクションの値は、単にテストのためにハードコードされている)である。ストアドプロシージャ内で更新しようとするとMySQLエラーコード1175が発生する
CREATE DEFINER=`root`@`localhost` PROCEDURE `destination_update`(
IN destination_id char(3),
IN destination_name varchar(250),
IN is_office tinyint(1),
IN address varchar(250),
IN status_id int(11))
BEGIN
UPDATE `paisanos_new`.`destinations`
SET
`destination_name` = 'b',
`is_office` = 0,
`address` = 'b',
`status_id` = 2
WHERE `destination_id` = 'zzz';
END
私がプロシージャを呼び出すとき:
call paisanos_new.destination_update('zzz', 'a', 0, 'a', 2);
私は次のエラーを取得する:
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
しかし、私は更新クエリを実行するだけでうまくいきます。
SQL_SAFE_UPDATESを無効にしようとしましたが、ストアドプロシージャを実行すると、すべてのテーブルレコードが更新されます。実際に、私は主キーを持つwhere句を持っていなかったかのように。
アイデア?
あなたの答えをありがとう、それは問題でした。 –
いいえ、干し草!あなたが好きならUpvote;) – sdsc81
もちろん、私はそれをupvotedしているが、悲しいことに私はここで評判がないので、それはカウントされませんu.u –