Я реализую хранимую процедуру, которая удаляет запись и заменяет новую в той же таблице. Я не могу сохранить уже сохраненное изображение / блоб, если изображение не доступно в новой записи. Вот моя хранимая процедура
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `modifyEmployee`(
in pic blob,
in eid varchar(6) ,
in ename varchar(15),
in gname varchar(10) ,
in dob date ,
in doj date ,
in qual varchar(20),
in aadhar char(12),
in pan char(10),
in bank_acno varchar(18),
in ifsc varchar(11),
in bname varchar(15),
in brname varchar(15),
in mobileno char(10),
in altno char(10),
in praddress varchar(225),
in permaddress varchar(225),
in dol date,
in sslc boolean,
in scheck boolean,
in pcheck boolean,
in gcheck boolean,
in agreement boolean,
in desig varchar(10),
in empcode varchar(10)
)
BEGIN
Declare phot blob;
IF(pic IS NULL) THEN
select photo into phot from `employee`.`employeeinfo` where `employee_id`=eid;
DELETE FROM `employee`.`employeeinfo` WHERE (`employee_id` = eid);
CALL `employee`.`addNewEmp`(phot, eid , ename , gname, dob, doj, qual, aadhar, pan, bank_acno, ifsc, bname, brname, mobileno, altno, praddress, permaddress, dol, sslc, scheck, pcheck, gcheck, agreement, desig, empcode );
END IF;
DELETE FROM `employee`.`employeeinfo` WHERE (`employee_id` = eid);
CALL `employee`.`addNewEmp`(pic, eid , ename , gname, dob, doj, qual, aadhar, pan, bank_acno, ifsc, bname, brname, mobileno, altno, praddress, permaddress, dol, sslc, scheck, pcheck, gcheck, agreement, desig, empcode );
END$$
DELIMITER ;
я пробовал несколько вариантов, если pic равно нулю, например
1
Declare phot blob;
IF(pic IS NULL) THEN
set phot (select photo from `employee`.`employeeinfo` where `employee_id`=eid);
2
Declare phot blob;
IF(pic IS NULL) THEN
select photo into phot from `employee`.`employeeinfo` where `employee_id`=eid);
3
IF(pic IS NULL) THEN
select photo into pic from `employee`.`employeeinfo` where `employee_id`=eid);
но в результате я не могу сохранить исходное изображение. (Я знаю, что использование оператора update - лучшая идея, но я не могу отслеживать все изменения, поэтому использование оператора update не вызывает вопросов.