2016-03-29 20 views
2

MySQL 5.5.41のストアドプロシージャに問題があります。問題は、プロシージャの実行中にエラーがスローされることです - Error code: 1172, SQLState: 42000, Message: Result consisted of more than one row。奇妙なことは、ステートメントを実行しながら、それがスローされていることである。結果が挿入中に複数の行で構成される

INSERT INTO TB__X 
      (FK__A, FK__B, FK__C, FK__D, E, F, G, H, I, J, L) 
     VALUES 
      (9106, 4927, NULL, 3, 4.9990234375, 20, 0, 0, 1, 0, 1); 

表は以下のとおりです。

CREATE TABLE `TB__X` (
`ID` int(11) NOT NULL AUTO_INCREMENT, 
`FK__A` int(11) NOT NULL, 
`FK__B` int(11) NOT NULL, 
`FK__C` int(11) DEFAULT NULL, 
`FK__D` int(11) NOT NULL, 
`E` double NOT NULL, 
`F` int(11) NOT NULL, 
`G` double NOT NULL, 
`H` tinyint(4) NOT NULL, 
`I` tinyint(4) NOT NULL, 
`J` tinyint(4) NOT NULL, 
`K` TEXT, 
`L` tinyint(4) NOT NULL, 
PRIMARY KEY (`ID`), 
UNIQUE KEY `IX_U_1` (`FK__B`,`FK__C`,`D`), 
KEY `I__2` (`FK__A`), 
KEY `I__3` (`FK__C`), 
KEY `I__4` (`F`), 
KEY `I__5` (`FK__D`), 
CONSTRAINT `FK__1` FOREIGN KEY (`FK__B`) REFERENCES `TB__B` (`ID`), 
CONSTRAINT `FK__2` FOREIGN KEY (`F`) REFERENCES `TB__F` (`ID`), 
CONSTRAINT `FK__3` FOREIGN KEY (`FK__C`) REFERENCES `TB__C` (`ID`), 
CONSTRAINT `FK__4` FOREIGN KEY (`FK__D`) REFERENCES `TB__D` (`ID`), 
CONSTRAINT `FK__5` FOREIGN KEY (`FK__A`) REFERENCES `TB__A` (`ID`) 
) ENGINE=InnoDB AUTO_INCREMENT=13575 DEFAULT CHARSET=utf8 

誰もがこのエラーがinsert文で何を意味するか知っていますか?

+1

プロシージャがいくつか選択して挿入していますか? YESの場合、選択値はカーソルを使用しなければならず、挿入はループ内で行われます。 –

+0

問題は少なくともINSERT文ではないようです([SQL Fiddle demo](http://sqlfiddle.com/#!2/b8c47/1)を参照)。詳細をお知らせください。 – wchiquito

+0

@abhikchakrabortyプロシージャはSELECT INTO変数ステートメントを実行していますが、MAX/MIN、LIMIT 1またはユニークインデックスの等価条件を使用しています – piotrgajow

答えて

2

私は問題の原因を見つけました。テーブルにTRIGGER AFTER INSERTというデータが挿入されていて、トリガーの内側にSELECT INTOステートメントがあり、複数の行が返されていました。

関連する問題