MySQL - 子查询返回超过1行(奇怪的一行)

时间:2013-10-09 10:18:37

标签: mysql sql-update

我正面临着奇怪的问题。

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

以下是查询:

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 ; 

1 个答案:

答案 0 :(得分:1)

似乎是ON UPDATE触发器有一个子查询,它返回的结果超过1,而且不应该。

您必须查看触发器中的查询并运行它们以查看哪些返回重复。

然后,修改触发器或查看表中是否确实存在重复的条目并删除它们(仅当不存在重复项时)。