mysql 语法错误 1064 "NEW" 在此位置对于此服务器版本无效,需要标识符
mysql syntax error 1064 "NEW" is not valid at this position for this server version, expecting an identifier
我收到一条与语法相关的错误消息。我搜索了 MySql 文档和这些表格,但似乎找不到任何有用的东西。
我正在尝试调用触发器中的存储过程。如果患者没有家庭医生(因此 Fam_Phys_SSN 为空),则调用程序并为他们分配一名家庭医生。
我正在使用 MySql workbench (MySql 8),我收到错误消息:
错误代码:1064。您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 5
行 'CALL RETURN_PHYSICIAN(SSN); END IF; END' 附近使用的正确语法
错误出现在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');
CALL
不是表达式,也不是 return 值。结果是一个 OUT
参数,因此您需要将列放在参数列表中。
CREATE TRIGGER trig1 BEFORE INSERT ON patient
FOR EACH ROW
BEGIN
IF NEW.Fam_Phys_SSN IS NULL THEN
CALL RETURN_PHYSICIAN(NEW.SSN, NEW.Fam_Phys_SSN);
END IF;
END//
我收到一条与语法相关的错误消息。我搜索了 MySql 文档和这些表格,但似乎找不到任何有用的东西。
我正在尝试调用触发器中的存储过程。如果患者没有家庭医生(因此 Fam_Phys_SSN 为空),则调用程序并为他们分配一名家庭医生。
我正在使用 MySql workbench (MySql 8),我收到错误消息:
错误代码:1064。您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 5
行 'CALL RETURN_PHYSICIAN(SSN); END IF; END' 附近使用的正确语法错误出现在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');
CALL
不是表达式,也不是 return 值。结果是一个 OUT
参数,因此您需要将列放在参数列表中。
CREATE TRIGGER trig1 BEFORE INSERT ON patient
FOR EACH ROW
BEGIN
IF NEW.Fam_Phys_SSN IS NULL THEN
CALL RETURN_PHYSICIAN(NEW.SSN, NEW.Fam_Phys_SSN);
END IF;
END//