1

ストアド プロシージャを呼び出そうとしていますが、エラー コード: 1175 セーフ アップデート モードを使用しており、キー列を使用する WHERE なしでテーブルを更新しようとしました。

ここにテーブルがあります:

CREATE TABLE `SystemSetting` (
  `SettingName` varchar(45) NOT NULL,
  `SettingValue` varchar(45) NOT NULL,
  `Deleted` bit(1) NOT NULL DEFAULT b'0',
  PRIMARY KEY (`SettingName`),
  KEY `PK_SystemSetting` (`SettingName`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

そして手順:

DELIMITER $$

CREATE PROCEDURE `SystemSettingCommit` (IN p_SettingName varchar(45), IN p_SettingValue varchar(45), OUT p_Status varchar(55)) 
BEGIN
SET p_Status = '00000';

IF (p_SettingValue IS NULL) OR (RTRIM(LTRIM(p_SettingValue)) = '') THEN
    SET p_Status = `StatusConcat`(p_Status, '10016');
END IF; 

IF (p_SettingName IS NULL) OR (RTRIM(LTRIM(p_SettingName)) = '') THEN
    SET p_Status = `StatusConcat`(p_Status, '10017');
END IF; 

IF (p_Status = '00000') THEN
    IF ((SELECT COUNT(`SettingName`) FROM `SystemSetting` WHERE (`SettingName` = p_SettingName)) > 0) THEN
        UPDATE `SystemSetting` SET `SettingValue` = p_SettingValue WHERE (`SettingName` = p_SettingName);
    ELSE
        INSERT INTO `SystemSetting` (`SettingName`, `SettingValue`) VALUES (p_SettingName, p_SettingValue);
    END IF;
END IF; 
END$$

DELIMITER;

これが私がそれを呼ぶ方法です:

CALL `SystemSettingCommit` ('Setting1', 'Value1', @Status);
4

1 に答える 1

2

これを試して:

SET SQL_SAFE_UPDATES=0;

または、ワークベンチでこれに従います。

  • [編集] --> [設定] に移動します
  • [SQL クエリ] タブをクリックし、[安全な更新] チェック ボックスをオフにします。
  • クエリ --> サーバーに再接続
  • SQLクエリを実行します
于 2013-08-20T12:01:19.617 に答える