2013-09-09 3 views
2

Может кто-нибудь объяснить мне это ... :) (с использованием MySQL 5.6.13)UPDATE, без подзапроса бросает ошибку: подзапрос возвращает более 1 строки

UPDATE offer SET cosid=1 WHERE id=40; 
Query OK, 1 row affected (0.07 sec) 
Rows matched: 1 Changed: 1 Warnings: 0 

UPDATE offer SET cosid=4 WHERE id=40; 
ERROR 1242 (21000): Subquery returns more than 1 row 

UPDATE offer SET cosid=5 WHERE id=40; 
Query OK, 1 row affected (0.04 sec) 
Rows matched: 1 Changed: 1 Warnings: 0 

Каждый достоверный показатель принимается за исключением четырех :(

Это предложение таблица:

CREATE TABLE offer (
    id    bigint(20) NOT NULL AUTO_INCREMENT, 
    authorid   bigint(20) NOT NULL, 
    offered_designid bigint(20) NOT NULL, 
    cdid    bigint(20), 
    cosid   bigint(20) NOT NULL, 
    PRIMARY KEY (id), 
    UNIQUE INDEX (id)) ENGINE=InnoDB; 

Любое предположение, что может быть неправильно

EDITED: Это ток соз таблица:

SELECT * FROM cos; 
+----+-------------+ 
| id | offer_state | 
+----+-------------+ 
| 1 | active  | 
| 5 | cancelled | 
| 3 | inactive | 
| 4 | realized | 
| 2 | waiting  | 
+----+-------------+ 

5 строк в наборе (0,00 сек)

+0

Я думаю, ошибка может привести к этому. Или поврежденные индексы (возможно.) Интересно, почему вы указали как первичный, так и уникальный индекс в одном столбце (не то, чтобы он создавал это ошибочное поведение, это не имеет значения.) –

+6

Еще одна вероятная причина - триггеры. У вас есть триггер UPDATE на столе? –

+0

Большое спасибо ypercube появился триггер по обновлению предложения, который изменил состояния. спасибо – Michal

ответ

3

Как ypercube заявил в комментариях, и вы подтвердили, Триггеры виновником здесь!

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