mysql - 没有子查询的更新会引发错误 : Subquery returns more than 1 row

标签 mysql sql sql-update mysql-5.6

有人可以向我解释一下吗...:) (使用MySQL 5.6.13)

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;

有什么建议可能是错误的吗?

编辑:这是当前的cos表:

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

一组 5 行(0.00 秒)

最佳答案

正如 ypercube 在评论中所说,并且您已经确认,触发器是这里的罪魁祸首!

关于mysql - 没有子查询的更新会引发错误 : Subquery returns more than 1 row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46482388/

相关文章:

php - PDO 只返回 mysql 的一半结果

mysql - 如何在 mySQL 中合并多个查询结果中的列?

MySql 一次更新两个表

php - 在 MySQL 中同步两个表中的行数据的最佳方法是什么?

mysql - 仅保留前 5 个高分的 SQL 命令

php - 不使用外键引用的 MySQL 关系

php - 在扩展服务器时使用不同的时区会产生不利影响吗?

sql - 无法批量加载。文件 "c:\data.txt"不存在

java - SQLite数据库,在第二个数字后插入punt

sql - 更新基于 3 个表的列?