-2

我面临着奇怪的问题。

我正在尝试更新表中的记录。我正在使用主键(唯一且非空)进行更新。

这是查询:

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”的记录。我不确定发生了什么。

如果我遗漏任何东西,请纠正我。

注意:如果我创建新记录并更新该记录没有问题。但是,如果我尝试更新旧记录,我会得到这个。

扳机:

-- 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 回答