2013-10-09 5 views
-2

Я столкнулся со странной проблемой.MySQL - Подзапрос возвращает более 1 строки (странный)

Я пытаюсь обновить запись в своем столе. Я обновляю, используя первичный ключ (Unique и Not 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; 

Я уверен, что у меня есть только одна запись в базе данных с идентификатором '13493'. Я не уверен, что происходит.

Исправьте меня, если мне не хватает какой-либо вещи.

Примечание: если я создаю новую запись и обновляю эту запись, никаких проблем. Но если я попытаюсь обновить старую запись, я получаю это.

Trigger:

-- 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 * от' rxMaster' WHERE 'rxMasterID' = 13493;' – sarwar026

ответ

1

Это, как представляется, ON UPDATE триггер имеет подзапрос, который возвращает более 1 результат, и он не должен.

Вам нужно будет просмотреть запросы в триггере и запустить их, чтобы увидеть, что возвращает дубликаты.

Затем либо измените триггер, либо посмотрите, действительно ли повторяющиеся записи в ваших таблицах и удалить их (только если не должно быть дубликатов).

+0

Извините, я случайно сбросил триггер «Вставить». Теперь я сбросил триггер обновления и работаю нормально. Я исправлю триггер обновления. много для вашей помощи. – vissu

Смежные вопросы