如何创建触发器:插入CabinCrew时累加时长至Employee的FlightHours
实现CabinCrew插入时自动更新Employee飞行时长的触发器
针对你的需求,以下是主流数据库的触发器实现方案:
SQL Server 实现
CREATE TRIGGER trg_CabinCrew_Insert_UpdateFlightHours ON CabinCrew AFTER INSERT AS BEGIN SET NOCOUNT ON; UPDATE e SET e.FlightHours = e.FlightHours + i.Hours FROM Employee e INNER JOIN inserted i ON e.EmployeeID = i.EmployeeID; END;
- 触发器在
CabinCrew表插入操作完成后触发,通过系统表inserted获取新插入的记录,关联Employee表累加飞行时长。
MySQL 实现
DELIMITER // CREATE TRIGGER trg_CabinCrew_Insert_UpdateFlightHours AFTER INSERT ON CabinCrew FOR EACH ROW BEGIN UPDATE Employee SET FlightHours = FlightHours + NEW.Hours WHERE EmployeeID = NEW.EmployeeID; END // DELIMITER ;
- 使用
DELIMITER临时修改语句分隔符,避免与触发器内的分号冲突;NEW关键字代表刚插入的行数据,逐行触发更新。
Oracle 实现
CREATE OR REPLACE TRIGGER trg_CabinCrew_Insert_UpdateFlightHours AFTER INSERT ON CabinCrew FOR EACH ROW BEGIN UPDATE Employee SET FlightHours = FlightHours + :NEW.Hours WHERE EmployeeID = :NEW.EmployeeID; END; /
- 通过
:NEW引用新插入的行数据,FOR EACH ROW确保每条插入记录都触发对应的Employee表更新。
内容的提问来源于stack exchange,提问作者Vonec
相关产品推荐
相关产品推荐

