Sql-Server

檢查文本列中的更改

  • August 17, 2016

使用 SQL Server 2012,如何檢查文本列中的更改?

我知道 text 數據類型已被棄用,並得到有用的消息

不能在 ‘inserted’ 和 ‘deleted’ 表中使用 text、ntext 或 image 列。

當試圖在觸發器中引用現有的文本列時,像在列上加入插入和刪除的表這樣的事情不起作用。UPDATE()起作用,但它總是正確的(我猜前端只是推送表單欄位中的任何數據,無論它是否更改)。

關於如何檢查列上的更改有什麼建議嗎?

你能實現一個 INSTEAD OF UPDATE 觸發器嗎?- 對我的本地實例的快速測試表明您可以引用插入和刪除的表。當然,您仍然必須應用真正的更新。

這是我的快速測試

create table TextDataTypeTest (Col1 text)
insert into dbo.textdatatypetest (col1) values('test')
----------------
create TRIGGER dbo.TextDataTypeTest_Trigger
  ON  dbo.TextDataTypeTest 
  instead of UPDATE
AS 
BEGIN

select col1 into #Before from deleted
select col1 into #After from inserted

select * from #Before

select * from #After
update a 
set a.col1=b.col1 
from dbo.textdatatypetest a join
inserted b on 1=1

END
GO


update dbo.textdatatypetest set col1='oneforalx'

引用自:https://dba.stackexchange.com/questions/147002