У меня ниже хранимые процедуры:ПОСЛЕДНИХ ВСТАВИТЬ ID SQL подзапрос возвращает более одной строки
DELIMITER $$
DROP PROCEDURE IF EXISTS spCashDonation$$
CREATE PROCEDURE spCashDonation(IN fname varchar(50),IN lname varchar(50),IN telNo bigint, IN pmode tinyint,IN amt decimal(8,2), OUT rno varchar(20))
BEGIN
Set @rmain := (select trim(concat('DNB', DATE_FORMAT(CURRENT_DATE(), '%y'), DATE_FORMAT(CURRENT_DATE(), '%m'))));
IF ((trim(DATE_FORMAT(CURRENT_DATE(),'%m')) = 01) OR (trim(DATE_FORMAT(CURRENT_DATE(),'%m')) = 1)) THEN
Set @rpart = 1;
END IF;
IF ((trim(DATE_FORMAT(CURRENT_DATE(),'%m')) != 01) OR (trim(DATE_FORMAT(CURRENT_DATE(),'%m')) != 1)) THEN
Set @rpart := (select coalesce(max(ReceiptPart),0) from Donation) + 1;
END IF;
INSERT INTO Donation (ReceiptMain, ReceiptPart, firstName, lastName, telNo, payMode, Amount) VALUES (@rmain, @rpart, fname, lname, telNo, pmode, amt);
Set @lid := (select LAST_INSERT_ID()from donation);
select concat(ReceiptMain,ReceiptPart) into rno from donation where id = @lid;
END$$
DELIMITER ;
Call spCashDonation ('RAJIV','IYER',7506033048,0,1000,@rno);
select @rno;
Когда таблица не имеет никаких записей, первая вставка идет через штраф. На второй вставке он выдает ошибку, как код
Ошибка: 1242. Subquery возвращает более 1 ряд
Когда я запрашиваю для последней вставки идентификатора, я получаю больше, чем 1 значение. Таким образом, я изменил последнюю часть процедуры на:
Set @lid: = (выберите пожертвование (LAST_INSERT_ID());
Прошу совета, если это нормально, так как это не должно препятствовать одновременным вставкам и будущим операциям CRUD. Заранее спасибо.
Спасибо, это работает – Rajiv
Рад, это решило вашу проблему :) – Arulkumar