这是使用 Microsoft SQL Server 2008。
我有 2 个表,Employee 和 EmployeeResult,我试图在 EmployeeResult 上编写一个简单的 INSERT 触发器来执行此操作 - 每次对 EmployeeResult 执行 INSERT 时,例如:
(杰克,200,销售)
(简,300,营销)
(约翰,400,工程)
它应该查找名称、部门条目对,例如
(杰克,销售),
(简,营销),
(约翰,工程学)
在 Employee 表中,如果这样的员工不存在,则应将其插入到 Employee 表中。
我所知道的是如何修复“???”的未知数:
CREATE TRIGGER trig_Update_Employee
ON [EmployeeResult]
FOR INSERT
AS
IF EXISTS (SELECT COUNT(*) FROM Employee WHERE ???)
BEGIN
INSERT INTO [Employee] (Name, Department) VALUES (???, ???)
END
Schema:
Employee
--------
Name, varchar(50)
Department, varchar (50)
EmployeeResult
--------------
Name, varchar(50)
Salary, int
Department, varchar (50)
您想利用inserted在触发器上下文中可用的逻辑表。它与要插入的表的架构匹配,并包含将插入的行(在更新触发器中,您可以访问inserted and deleted分别代表新数据和原始数据的逻辑表。)
因此,要插入当前不存在的员工/部门对,您可以尝试如下操作。
CREATE TRIGGER trig_Update_Employee
ON [EmployeeResult]
FOR INSERT
AS
Begin
Insert into Employee (Name, Department)
Select Distinct i.Name, i.Department
from Inserted i
Left Join Employee e
on i.Name = e.Name and i.Department = e.Department
where e.Name is null
End
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)