Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 用于在添加时将欢迎消息添加到员工配置文件的触发器_Mysql_Triggers - Fatal编程技术网

Mysql 用于在添加时将欢迎消息添加到员工配置文件的触发器

Mysql 用于在添加时将欢迎消息添加到员工配置文件的触发器,mysql,triggers,Mysql,Triggers,我有这个示例数据库,在通过触发器将新员工添加到员工表中之后,我想将欢迎文本添加到两列中 但它给了我语法错误 以下是我的代码段尝试: DELIMITER$$ BEGIN after insert into employeenumber for each row, set action='update', set sms='welcome', set emails='welcome'; END END$$ DELIMITER; 您的语法中有几个错误。请尝试以下操作: CREATE TRIGGER

我有这个示例数据库,在通过触发器将新员工添加到员工表中之后,我想将欢迎文本添加到两列中

但它给了我语法错误

以下是我的代码段尝试:

DELIMITER$$
BEGIN
after insert into employeenumber for each row,
set action='update',
set sms='welcome',
set emails='welcome';
END
END$$
DELIMITER;

您的语法中有几个错误。请尝试以下操作:

CREATE TRIGGER `afterEmployeeNumberInsert` before INSERT ON employeenumber
FOR EACH ROW BEGIN
   SET NEW.action = 'update',
       NEW.sms = 'welcome',
       NEW.emails = 'welcome';
END
这是一张工作票

话虽如此,我不明白为什么需要触发器为插入的每一行插入相同的数据。当数据库可以为您执行工作时,您正在添加额外的代码

这里是mysql的链接

在插入触发器中,只能使用NEW.col_名称;没有旧的 划船

名为with OLD的列是只读的。你可以参考它(如果你有 选择权限),但不修改它。你可以参考一列 如果您具有“选择”权限,则使用“新建”命名。在以前 触发器,也可以使用SET NEW.col_name=value更改其值 如果你有更新权限。这意味着您可以使用 触发器修改要插入新行或用于 更新一行。(此类SET语句在AFTER触发器中无效。) 因为行更改将已经发生。)


错误是什么。为什么要使用触发器,为什么不将其与常规数据一起插入,或者让这些列具有默认值呢?MYSQL说:#1064-您的SQL syntx中有一个错误;检查与您的MYSQL服务器版本对应的手册,了解在插入到employeenumber后,在每行的第2行设置action='update',在“开始”附近使用的正确语法。我的其他2个问题呢?如果插入后每一行都有相同的数据,为什么还要麻烦使用触发器呢?为什么不为列使用默认值,或者在插入行时插入数据?非常感谢neel博士的关注。但是,我想说的是,我想通过触发器修改employee表中的相同列,并通过触发器将“欢迎”消息添加到接下来的sms和电子邮件列中。在Employees表中插入新行后,您无法更新在After触发器中插入的行。“在after触发器中不允许更新新行”。你必须使用之前。如果你看小提琴,结果是一样的