如何使用触发器和 if 条件将值插入 SQL 表?
Posted
技术标签:
【中文标题】如何使用触发器和 if 条件将值插入 SQL 表?【英文标题】:How to insert values into an SQL table using triggers and if conditions? 【发布时间】:2021-07-20 22:57:35 【问题描述】:基本上,我正在尝试创建一个“退休”SQL 表,该表将从现有的“员工”SQL 表中获取其值。
如果员工的服务年限超过 5 年,则他/她将被添加到退休表中。
我正在分享我尝试过的代码。
CREATE TABLE Retired(
StaffID INT
);
DELIMITER #
CREATE TRIGGER RetiredTrigger after insert on Staff
FOR EACH ROW
BEGIN
INSERT INTO ALUMNI(StaffID) VALUES(new.StaffID);
IF Staff.YearsOfService > 5
END #
理想情况下,结果应该是一张表(即退休表),其中的 StaffID 应仅包含 YearsOfService 大于 5 的教师。
我希望我能够清楚地表达我的疑问。
提前致谢。
【问题讨论】:
YearsOfService
何时/如何更新?存储员工的开始日期会比包含 YearsOfService 的字段更好......
【参考方案1】:
CREATE TABLE Retired(
StaffID INT
);
DELIMITER #
CREATE TRIGGER RetiredTrigger after insert on Staff
FOR EACH ROW
BEGIN
IF (NEW.YearsOfService > 5) THEN
INSERT INTO Retired(StaffID) VALUES(new.StaffID);
END IF;
END #
DELIMITER ;
【讨论】:
虽然此代码可能会回答问题,但提供有关 why 和/或 如何 此代码回答问题的附加上下文可提高其长期价值. 原始代码中的错误:表已退休,但值已插入另一个名为 ALUMNI 的表中。 IF 语句没有 END IF。此外,新变量不用于比较 YearsOfService。 您可以将其添加到答案本身)以上是关于如何使用触发器和 if 条件将值插入 SQL 表?的主要内容,如果未能解决你的问题,请参考以下文章