簡體   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