繁体   English   中英

选择数据,将计算值设置到列中

[英]Select data, setting a calculated value into a column

我正在从触发器(用于更新)中的表中选择数据。 我选择的某些行已由事务更新,并启动了触发器,而有些行则未更新。 我想在数据集中的某处为每行写一个标志,该标志的值将计算为“ id IN(SELECT [id] FROM INSERTED)”)。 该标志将显示是否用上一个事务更新的行。

在SQL中可以吗?

当然,我可以使用2个不同的条件执行2个单独的查询,但是触发性能是真正的瓶颈...

这是SQL Server的示例:

if object_id('TriggerTest') is not null
    drop table TriggerTest

create table TriggerTest (id int identity, name varchar(50), inLastUpdate bit)

insert TriggerTest (name) values ('joe'), ('barrack'), ('george'), ('dick')
go
create trigger dbo.TriggerTestDelete
on TriggerTest
after update
as begin
    declare @date datetime
    set @date = GETDATE()

    update  dbo.TriggerTest
    set     inLastUpdate = 
                 case when id in (select id from inserted) then 1 
                       else 0 
                 end
end
go
update TriggerTest set name = name where id in (1,2)
update TriggerTest set name = name where id in (1,3)
select * from TriggerTest

这打印:

id    name        inLastUpdate
1     joe         1
2     barrack     0
3     george      1
4     dick        0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM