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 !

建议将insert ,update 和Delete 单独创建触发器
触发器中只有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个表 数据关联,插入更新和删除?的主要内容,如果未能解决你的问题,请参考以下文章

sql中如何实现级联表的操作

在 Microsoft SQL Server 上插入触发器后 -- 更新新创建记录中的列

数据库中五个表要关联起来怎么写sql语句?

如何在 SQL Server 2008 上创建插入更新触发器

sql数据库中如何做到表与表之间字段的同步更新删除?

update 更新多个表 SQL