im创建一个mysql触发器(对触发器来说是全新的),并且出现错误:
#1064-您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第5行的''附近使用
代码是:
CREATE TRIGGER contact_name
AFTER UPDATE ON contacts
FOR EACH ROW
BEGIN
SET full_name = CONCAT(NEW.fname,' ',NEW.lname)
WHERE contacts_id = $contacts_id;
END;
我完全不知道为什么它不允许我设置触发器。
答案 0 :(得分:0)
SET FULL_NAME = CONCAT(NEW.fname,””,NEW.lname)WHERE contacts_id = $ contacts_id;
这是无效的语法:
SET
不采取WHERE
条款(SQL查询做,例如SELECT
,UPDATE
,INSERT
)
$contacts_id
您似乎试图在再次执行full_name
表UPDATE
时自动更新字段contacts
的值。
为此,您需要使用BEFORE UPDATE
触发器(而不是AFTER UPDATE
)来设置值NEW.full_name
。通常,在设置值之前,请确保未在更新查询中提供该值也是一种好习惯:
CREATE TRIGGER foo BEFORE UPDATE ON contacts
FOR EACH ROW
IF NEW.full_name IS NULL THEN
SET NEW.full_name := CONCAT(
COALESCE(NEW.fname, OLD.fname),
' ',
COALESCE(NEW.lname, OLD.fname)
);
END IF;;