Sql server update()和列_updated()之间的差异
我正在使用SQL Server 2012 我的表格定义:Sql server update()和列_updated()之间的差异,sql-server,Sql Server,我正在使用SQL Server 2012 我的表格定义: create table cust ( cid int identity, cnm varchar(100), country varchar(100) ) alter table cust add constraint pk primary key clustered on cust(cid) 我试图仅在更新cnm或国家/地区列时创建审计记录 我的两个问题: create trigger trig
create table cust
(
cid int identity,
cnm varchar(100),
country varchar(100)
)
alter table cust
add constraint pk primary key clustered on cust(cid)
我试图仅在更新cnm或国家/地区列时创建审计记录
我的两个问题:
create trigger trig_nm on cust
as
if columns_updated(cnm, country)
--create records.
create trigger trig_nm on cust
as
if update(cnm) or update(country)
--create records.
两个查询之间有什么区别?不可能这样使用
列\u更新(cnm,国家)
COLUMNS\u UPDATED
函数返回varbinary
,您需要进行一些逐位计算以确定哪些列被更新
根据,
COLUMNS\u UPDATED返回一个或多个从左开始排序的字节
向右,每个字节中的最低有效位为
最右边的
检验
更新或插入到特定列,请使用
位运算符和被测试列的整数位掩码。
例如,表t1包含C1、C2、C3、C4和C5列。到
验证C2、C3和C4列是否都已更新(使用表t1
具有更新触发器),请按照&14的语法进行操作。检验
是否仅更新C2列,请指定&2
您必须像这样检查列2、3和4是否更新
IF (COLUMNS_UPDATED() & 14) > 0
--Create Records
对于UPDATE()
函数,如果给定列被更新,它将返回Boolean
你可以这样使用它
IF ( UPDATE(cnm) OR UPDATE(Country))
--Create records
这不是工作原理,所以一个是语法错误,另一个不是?