-2

私は奇妙な問題に直面しています。

テーブルのレコードを更新しようとしています。主キー (一意で null 以外) を使用して更新しています。

クエリは次のとおりです。

UPDATE `rxMaster` SET `Name`='Ac Electri' WHERE `rxMasterID`=13493;

次のエラーを取得:

ERROR 1242: 1242: Subquery returns more than 1 row
SQL Statement:
UPDATE `rxMaster` SET `Name`='Ac Electri' WHERE `rxMasterID`=13493;

確かに、データベースには ID '13493' のレコードが 1 つしかありません。何が起こっているのかわかりません。

何か不足している場合は修正してください。

注:新しいレコードを作成してそのレコードを更新しても問題はありません。しかし、古いレコードを更新しようとすると、これが発生します。

引き金:

-- trigger for drop and update a record in rxMaster table, affected in search_text table. --
DELIMITER $$ 
DROP TRIGGER IF EXISTS `tr_upd_rolodexSearch`$$ 

CREATE TRIGGER `tr_upd_rolodexSearch` AFTER UPDATE on `rxMaster` 
    FOR EACH ROW 
        BEGIN 
            CALL sp_rolodex_upd_searchindex(NEW.rxMasterID, NEW.Name, NEW.SearchName, NEW.Phone1); 
        END$$ 
DELIMITER ; 
4

1 に答える 1

1

ON UPDATEトリガーには複数の結果を返すサブクエリがあるようですが、そうすべきではありません。

トリガー内のクエリを調べて実行し、重複を返すものを確認する必要があります。

次に、トリガーを変更するか、テーブルに実際に重複するエントリがあるかどうかを確認し、それらを削除します (重複があってはならない場合のみ)。

于 2013-10-09T11:10:20.080 に答える