‘壹’ sql update 触发器
create trigger tr_UpdateDptNo
on 部门信息表
for update
as
begin
if update( 部门编号 )
begin
-- 实际内容
end
end
update 部门信息表 set 部门编号 = xxx
‘贰’ sql触发器 update
使用更新什么字段才执行触发器就行了
CREATE TRIGGER GXDHSL ON RKD
FOR UPDATE
AS
IF(Update(字段名))
begin
DECLARE @DHDH VARCHAR(50) --计划单号
DECLARE @SL decimal(18,6) --修改前数量
DECLARE @DHSL decimal(18,6) --修改后数量
SELECT @DHDH=ysdh,@SL=SSSL FROM DELETED
SELECT @DHSL=SSSL FROM INSERTED
UPDATE GL_QGD SET DHSL=DHSL-ISNULL(@SL,0) WHERE DH=@DHDH
end
go
‘叁’ sql if update()触发器问题
触发器的触发条件仅仅是数据改变操作是否执行了,即一旦执行insert、update、delete三种命令之一,就要触发。
在update触发器中,通过if update()来过滤,看看是否需要采取什么相应动作,这种逻辑正常、合理呀。
‘肆’ sql触发器update
先不说你脚本中的笔误
你在触发器里并没有对表2进行操作呀
update 表1 set realname=@realname where uid=@uid
这个是你写错了吧?应该是表2才对。
‘伍’ SQL语句创建update触发器
create trigger up_salary on employee INSTEAD OF update
as if update (salary)
begin
declare @newSalary numeric(10,2)
declare @oldSalary numeric(10,2)
select @newSalary = salary from updated
select @oldSalary = salary from employee where emp_id = (select emp_id from updated)
if @newSalary > @oldSalary * 1.1
print '工资变动不能超过原来工资的10%'
else
update employee set salary = @newSalary where emp_id = (select emp_id from updated)
end
go
‘陆’ sql 触发器 update
select @修改前的值=bianhao from deleted
select @修改后的值=bianhao from inserted
‘柒’ SQL触发器里update(字段名)没有变化怎么写语句
要比较 Deleted 和 Inserted 2表中的值是否一致 ,才能确定字段是否被修改了。
如果字段A修改前是AAA修改后也是AAA,那也会触发 if update(字段A) 成立 。
‘捌’ SQL触发器怎样更新数据
--创建需触发的表
create table cfq(
a int,
b int
)
--创建触发器,监视该表
CREATE TRIGGER t_cfq ON dbo.cfq
for INSERT, UPDATE, DELETE
AS
begin
set nocount off
declare @a int
select @a=a from cfq
update cfq set b=@a where a=@a
end
--触动触发器
insert into cfq(a,b) select 2,null
insert into cfq(a,b) select 3,null
select * from cfq
所得结果
a b
2 2
3 3
‘玖’ sql如何取得触发器update前的值
具体操作步骤如下:
1、首先,创建一个触发器,要求是在AddTable表上创建update触发器,如下图所示,然后进入下一步。