首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系列语句/变量在MySQL中运行时工作,但在PHPMyAdmin中不起作用

系列语句/变量在MySQL中运行时工作,但在PHPMyAdmin中不起作用
EN

Stack Overflow用户
提问于 2022-08-24 19:18:44
回答 1查看 41关注 0票数 1

我试图为一项看似简单的家庭作业创建几个触发点,但我遇到了一个又一个问题。我本人和我的同学们被授权在PHPMyAdmin中创建一个在线食品订购数据库。作为一门入门课程,这是相当基本的东西,几年前我在一所学校上了一门SQL课程,所以这一切都回到了我的脑海。

尽管我以前有过经验,但我以前从未处理过触发器,也没有使用过PHPMyAdmin,但我已经习惯了它。我的数据库有8个表,但对这种情况唯一重要的是、tbl_employee、和tbl_employee我们的任务是使用一个自动递增的"ID“(主键)和一个用于脚注的varchar(100)来创建。我们应该创建两个触发器:一个用于指示employee表的最新添加项,另一个用于指示何时已从表中删除员工。我们以“在(插入日期)上添加ID = (insert ID)的New”格式在tbl_employee_audit表中记录这些更改。看起来很简单..。

正如我在这篇文章的标题中所指出的,我已经开发了一段代码,当我在PHPMyAdmin的SQL选项卡中运行它时,但是当我试图将它放入触发器时,我会收到一条错误消息,表示第2行(即@varID)的语法是不正确的。以下是我所拥有的:

代码语言:javascript
复制
SET @varDate = CURRENT_DATE();
SET @varID = (SELECT emp_ID FROM tbl_employee WHERE emp_ID = (SELECT MAX(emp_ID) FROM tbl_employee));

SET @string1 = 'New employee with ID = ';
SET @string2 = ' was added on ';

SET @var1 = CONCAT(@string1, @varID, @string2, @varDate);

INSERT INTO tbl_employee_audit(audit_data) VALUES (@var1);

我试着在SQL选项卡中创建自己的触发器,但没有成功,所以我一直试图使用触发器选项卡中的“CreateNew触发器”函数。我调用触发器"after_employee_insert",将表设置为"tbl_employee",将时间设置为“后”,将事件设置为“插入”,并试图让我的代码在定义框中工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-24 20:25:47

首先,您不需要使用触发器中的查询获取最新的emp_ID。您可以在插入过程中使用NEW.emp_ID直接获得它。

在触发器体中,旧的和新的关键字使您能够访问受触发器影响的行中的列。旧的和新的是触发器的MySQL扩展;它们不区分大小写。

请参阅这里

其次,在创建新触发器时,请确保使用DELIMITER $$更改分隔符。MySQL将第一个;分号视为CREATE TRIGGER语句的结尾。

最后,确保使用END$$而不是END;结束CREATE触发器语句,因为我们在第一行中将分隔符更改为$$。然后使用DELIMITER ;将分隔符更改为分号;,并确保在DELIMITER;之间包含一个空格。

代码语言:javascript
复制
DELIMITER $$
CREATE TRIGGER after_employee_insert AFTER INSERT
ON tbl_employee
FOR EACH ROW
BEGIN
  SET @var1 = CONCAT('New employee with ID = ', NEW.emp_ID, ' was added on ',
  CURRENT_DATE());
  INSERT INTO tbl_employee_audit
              (audit_data)
  VALUES      (@var1);
END$$
DELIMITER ;

小提琴

注意上面的Fiddle语法: PHP驱动程序不支持划界器,因为它不是mysql数据库命令,而是mysql客户端命令。

为delete触发器编写类似的触发器,将触发器更改为AFTER DELETEOLD.emp_ID

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73478566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档