gpt4 book ai didi

SQL Server 2008 - 帮助编写简单的 INSERT 触发器

转载 作者:行者123 更新时间:2023-12-03 11:03:23 24 4
gpt4 key购买 nike

这是 Microsoft SQL Server 2008。

我有 2 个表,Employee 和 EmployeeResult,我正在尝试在 EmployeeResult 上编写一个简单的 INSERT 触发器来执行此操作 - 每次对 EmployeeResult 执行 INSERT 时,例如:

( jack ,200,销售)
(简,300,营销)
(约翰,400,工程)

它应该查找 Name、Department 条目对,例如

( jack ,销售),
(简,营销),
(约翰,工程)

在 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

请帮忙,提前致谢

架构:
Employee
--------
Name, varchar(50)
Department, varchar (50)

EmployeeResult
--------------
Name, varchar(50)
Salary, int
Department, varchar (50)

最佳答案

您想利用 插入 在触发器上下文中可用的逻辑表。它匹配要插入的表的模式并包括将要插入的行(在更新触发器中,您可以访问 插入 删除 逻辑表分别代表新数据和原始数据。)

因此,要插入当前不存在的员工/部门对,您可以尝试以下操作。

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

关于SQL Server 2008 - 帮助编写简单的 INSERT 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1355921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com