Я получаю сообщение об ошибке, связанное с синтаксисом. Я искал документацию MySql и эти формы и не могу найти ничего, что работает.
Я пытаюсь вызвать хранимую процедуру в триггере. Если у пациента нет семейного врача (следовательно, Fam_Phys_SSN равен нулю), то вызывается процедура, и ему назначается семейный врач.
Я использую MySql верстак (MySql 8) и получаю сообщение об ошибке:
Код ошибки: 1064. У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'CALL RETURN_PHYSICIAN (SSN); END IF; END 'в строке 5
Ошибка появляется на "NEW" в SET NEW.Fam_Phys_SSN ...
Мой код:
-- Write your stored procedure after this line
delimiter //
create procedure RETURN_PHYSICIAN(IN paSSN INT(11), OUT phSSN INT(11))
BEGIN
select person.SSN INTO phSSN
from person join physician using (SSN)
where city = (select city from person where SSN = paSSN)
AND country = (select country from person where SSN = phSSN);
END//
DELIMITER ;
-- Write your trigger after this line and call the stored procedure in the body of the trigger.
delimiter //
CREATE TRIGGER trig1 BEFORE INSERT ON patient
FOR EACH ROW
BEGIN
IF Fam_Phys_SSN IS NULL THEN
SET NEW.Fam_Phys_SSN = CALL RETURN_PHYSICIAN(SSN);
END IF;
END//
DELIMITER ;
-- Do not modify or delete the following lines. Do not write anything after this line.
insert into patient values('530166255', null, 'Noel.Jackson@a.com');