我正在尝试在更新此表的薪水字段时创建触发器。 来自该站点SQL Trigger的客户(ID,姓名,年龄,地址,薪水) 创建它时显示以下错误
MySQL说:
#1064-您的SQL语法有误;检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以便在'OR INSERT或UPDATE ON客户附近使用
每行
何时(NEW.ID> 0)
宣布
'在第2行
这是代码段:
{
"app": "Beach",
"Process": "steam",
"versions": [
{
"version": "2.6.5",
"conf": "replian"
}, ...
请注意,我正在使用phpMyAdmin。 dbms_ouput.put_line()在那里工作吗?
答案 0 :(得分:0)
如评论中所述,您使用的是Oracle语法,它无法在MySQL上运行。
然后,没有理由在DELETE和INSERT上触发此触发器,因为您的目的是在更新之前和之后计算特定行的薪金差异。在DELETE上不能有新值,在INSERT上不能有OLD值。 因此,您的计算仅在UPDATE时有意义。
这是正确的MySQL语法(我假设您的表上有一列sal_diff
)
DELIMITER $$
CREATE TRIGGER `update_sal_diff`
BEFORE UPDATE ON `customers `
FOR EACH ROW
BEGIN
SET NEW.sal_diff = NEW.salary - OLD.salary;
END $$
DELIMITER ;
如果这不是您要实现的目标,请编辑问题并添加明确的要求