【发布时间】:2020-07-06 12:33:05
【问题描述】:
我收到一条与语法相关的错误消息。我搜索了 MySql 文档和这些表格,似乎找不到任何有效的方法。
我正在尝试在触发器中调用存储过程。如果患者没有家庭医生(因此 Fam_Phys_SSN 为空),则调用该程序并为他们分配一名家庭医生。
我正在使用 MySql 工作台 (MySql 8),我收到错误消息:
错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 'CALL RETURN_PHYSICIAN(SSN); 附近使用的正确语法;万一; END' 在第 5 行
错误出现在 SET NEW.Fam_Phys_SSN 中的“NEW”...
我的代码是:
-- 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');
【问题讨论】:
标签: mysql mysql-workbench