SQL Server 2008 – 帮助编写简单的INSERT触发器
发布时间:2020-12-12 16:40:10 所属栏目:MsSql教程 来源:网络整理
导读:这是与Microsoft SQL Server 2008. 我有2个表,Employee和EmployeeResult,我试图在EmployeeResult上写一个简单的INSERT触发器,每次INSERT都完成到EmployeeResult中,例如: (杰克,200,销售) (简,300,营销) (约翰,400,工程) 它应该查找名称,部门条目对,如 (杰克,
这是与Microsoft SQL Server 2008.
我有2个表,Employee和EmployeeResult,我试图在EmployeeResult上写一个简单的INSERT触发器,每次INSERT都完成到EmployeeResult中,例如: (杰克,200,销售) 它应该查找名称,部门条目对,如 (杰克,销售), 在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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |