最近因为需要些sqlserver的触发器,因为毕业过后就没有接触过。头大,不过经过下面文章的阅读后,自 己左右思考,不断尝试,终于写到了符合自己的插入跟更新的触发器了。
点击参考文章链接
因为一个中间表老是插入有字段为空,因为是外部系统webservice塞数据给我们,我们是从这个表哪数据同步
老是同步失败,让外部公司改,他要收钱,气的我马上触发器搞起。
触发器插入 表
如果表eEmployee插入数据的ename字段为空或者为NULL 则根据key eid跟badge进行更新插入ename只为“–”
USE [OA_Interface] ---sqlserver数据库
GO
/****** Object: Trigger [dbo].[insertename] Script Date: 2023/2/2 15:31:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
create trigger [dbo].[insertename] ---触发器名称
on [dbo].[eEmployee] ---那个表触发
after insert --插入后再触发
as
BEGIN
SET NOCOUNT ON;
DECLARE @eid int --定义变量
DECLARE @Badge VARCHAR (100)
DECLARE @ename VARCHAR (200) --定义变量
select @eid=eid,@Badge=Badge,@ename=ename
FROM inserted ---特定的插入临时表系统自带有的
--变量赋值 ,找到 对应更新的那一行。
if (@ename='' or @ename is null)
BEGIN
update [dbo].eEmployee set @ename='--' where eid=@eid and Badge=@Badge
end
end
2.更新触发器
USE [OA_Interface] ---sqlserver数据库
GO
/****** Object: Trigger [dbo].[insertename] Script Date: 2023/2/2 15:31:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
create trigger [dbo].[updatetename] ---触发器名称
on [dbo].[eEmployee] ---那个表触发
after update--更新后再触发
as
BEGIN
SET NOCOUNT ON;
DECLARE @eid int --定义变量
DECLARE @Badge VARCHAR (100)
DECLARE @ename VARCHAR (200) --定义变量
select @eid=eid,@Badge=Badge,@ename=ename
FROM inserted ---特定的插入临时表系统自带有的
--变量赋值 ,找到 对应更新的那一行。
if (@ename='' or @ename is null)
BEGIN
update [dbo].eEmployee set @ename='--' where eid=@eid and Badge=@Badge
end
end
链接: link
版权声明:本文为weixin_40620651原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。