SQL Server 触发器 当一个字段值修改时,修改当前数据其他字段值

create  TRIGGER testtrigger --触发器名称
   on tb  --表名
  after update --更新触发
  as
  if update (column1)  --当column1字段被更新时,才会触发此触发器
BEGIN
    SET NOCOUNT ON;
    DECLARE @a VARCHAR (20)  --定义变量
    SET @a = (SELECT d.ida
    FROM
        deleted d,
        inserted i
    WHERE
        d.ida = i.ida
) --变量赋值 ,找到对应更新的那一行。
    update  tb  set  test = 'g2' where ida = @a --执行的操作
end
create  TRIGGER  [dbo].[billtrigger]  
   on [dbo].[ICStockBill] 
  after update --更新触发
  as
  if update (FStatus)  --当FStatus字段被更新时,才会触发此触发器
BEGIN
    SET NOCOUNT ON;
    DECLARE @a VARCHAR (20)  --定义变量
    SET @a = (SELECT
	d.FInterID
    FROM
        deleted d,
        inserted i
    WHERE
        d.FInterID = i.FInterID
) --变量赋值 ,找到对应更新的那一行。
update  ICStockBillEntry set  FEntrySelfB0457 = 
(select  b.FQty from ICInventory b 
where   ICStockBillEntry.FItemID = b.FItemID 
and  ICStockBillEntry.FSCStockID=b.FStockID)
where  finterid =@a
end

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
SQL Server是一种关系型数据库管理系统,可以使用触发器来在某个字段发生变化自动执行一系列的操作。触发器是与表相关联的一种特殊的存储过程,它会在特定的数据操作(如插入、更新、删除)之前或之后自动触发,从而实现某个字段变化的响应。 在创建触发器,我们需要指定触发器的类型(BEFORE或AFTER)、触发机(INSERT、UPDATE或DELETE)以及触发事件(行级触发器或语句级触发器)。对于某个字段变化触发器,我们通常会使用AFTER UPDATE触发机并编写相应的触发逻辑。 举个例子,假设我们有一个员工表(Employee),其中包含了员工的姓名(Name)和年龄(Age)字段。现在我们希望在年龄字段发生变化触发相应的操作,比如记录下变化之前和之后的年龄。 我们可以以以下方式创建一个触发器来实现这个功能: CREATE TRIGGER AgeTrigger AFTER UPDATE ON Employee FOR EACH ROW AS BEGIN IF UPDATE(Age) -- 判断是否是年龄字段发生变化 BEGIN DECLARE @OldAge INT; DECLARE @NewAge INT; SELECT @OldAge = Age FROM deleted; SELECT @NewAge = Age FROM inserted; -- 在这里可以实现相应的逻辑,比如记录下变化前后的年龄 PRINT '年龄已经从 ' + CAST(@OldAge AS VARCHAR) + ' 变为 ' + CAST(@NewAge AS VARCHAR); END END 以上触发器将在Employee表中的每一行更新之后被触发,然后判断是否是年龄字段发生了变化。如果是,则通过deleted和inserted表获取变化之前和之后的年龄,并执行相应的逻辑,比如打印出日志信息。 总之,通过使用SQL Server触发器功能,我们可以方便地在某个字段变化触发自定义的逻辑,实现更灵活的数据库操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值