2013-10-09 39 views
-2

我正面臨着奇怪的問題。MySQL - 子查詢返回多於1行(奇怪的)

我想更新我的表中的記錄。我通過使用主鍵(唯一和非空)更新。

下面是該查詢:

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 ; 
+5

這裏沒有子查詢。更新多行沒有任何問題。 –

+0

爲什麼這是一個子查詢什麼? –

+0

請仔細檢查您的查詢,方法是應用'select * from'rxMaster' WHERE'rxMasterID' = 13493;' – sarwar026

回答

1

這似乎是一個ON UPDATE觸發器有一個子查詢返回多於1分的結果,和它不應該。

您必須查看觸發器中的查詢並運行它們以查看哪些回覆重複。

然後,修改觸發器或查看錶中是否存在重複的條目並刪除它們(僅當不應該有重複項時)。

+0

對不起,我正在丟失'On Insert'觸發器,現在我放棄了更新觸發器並正常工作,我將更正我的更新觸發器。對你的幫助很大。 – vissu

相關問題