【问题标题】:How to insert values into an SQL table using triggers and if conditions?如何使用触发器和 if 条件将值插入 SQL 表?
【发布时间】: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 的字段更好......

标签: mysql sql triggers where-clause sql-insert


【解决方案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。
  • 您可以将其添加到答案本身)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
相关资源
最近更新 更多