[英]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.