我正面临着奇怪的问题。
我正在尝试更新表格中的记录。我正在使用主键更新(唯一和非空)。
以下是查询:
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 ;
答案 0 :(得分:1)
似乎是ON UPDATE
触发器有一个子查询,它返回的结果超过1,而且不应该。
您必须查看触发器中的查询并运行它们以查看哪些返回重复。
然后,修改触发器或查看表中是否确实存在重复的条目并删除它们(仅当不存在重复项时)。