SQL用触发器实现 2个表 数据关联,插入更新和删除?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL用触发器实现 2个表 数据关联,插入更新和删除?相关的知识,希望对你有一定的参考价值。
这是我的代码,但是提示有错。麻烦大家帮帮忙~
create TRIGGER [dbo].[Trigger_YGXX]
ON [dbo].[Payrollsystem_员工基础信息表]
AFTER INSERT,DELETE,UPDATE AS
--如果是添加
if exists(select 1 from inserted) and not exists(select 1 from deleted)
begin
insert into XSGL_Database.dbo.员工基础信息表
select * from inserted end
--如果是更新
else if
exists(select 1 from inserted) and exists(select 1 from deleted)
begin
Update Payrollsystem.员工基础信息表
where Payrollsystem.员工基础信息表.YGID=(select YGID from Updated)
end
--如果是删除
else if
not exists(select 1 from inserted) and exists(select 1 from deleted)
begin delete from Payrollsystem.员工基础信息表
where Payrollsystem.员工基础信息表.YGID = (select YGID from deleted)
END
错误提示是:消息 156,级别 15,状态 1,过程 Trigger_YGXX,第 14 行
关键字 'where' 附近有语法错误。
(where Payrollsystem.员工基础信息表.YGID=(select YGID from Updated)
end
--如果是删除)
表有两个,员工基础信息表 员工基本工资表 要关联的列式 YGID YDname !
触发器中只有inserted ,deleted
insert 时inserted有值
update时,inserted和deleted都有值,deleted是修改前的值,inserted是修改后的
delete时,只有deleted有值 参考技术A Update Payrollsystem.员工基础信息表
where Payrollsystem.员工基础信息表.YGID=(select YGID from Updated)
改成 把‘=’改成‘in’
Update Payrollsystem.员工基础信息表
where Payrollsystem.员工基础信息表.YGID in (select YGID from Updated)
试试
以上是关于SQL用触发器实现 2个表 数据关联,插入更新和删除?的主要内容,如果未能解决你的问题,请参考以下文章
在 Microsoft SQL Server 上插入触发器后 -- 更新新创建记录中的列