gpt4 book ai didi

sql-server - update() 和 columns_updated() 之间的区别

转载 作者:行者123 更新时间:2023-12-02 18:47:47 24 4
gpt4 key购买 nike

我使用的是 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 或国家/地区列更新时,我才尝试创建审核记录。

我的 2 个查询:

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.

两个查询有什么区别?

最佳答案

不可能像这样使用columns_updated(cnm,country)

COLUMNS_UPDATED 函数返回 varbinary,您需要进行一些按位计算来确定更新了哪些列。

根据MSDN ,

COLUMNS_UPDATED returns one or more bytes that are ordered from left to right, with the least significant bit in each byte being the rightmost.

To test for updates or inserts to specific columns, follow the syntax with a bitwise operator and an integer bitmask of the columns being tested. For example, table t1 contains columns C1, C2, C3, C4, and C5. To verify that columns C2, C3, and C4 are all updated (with table t1 having an UPDATE trigger), follow the syntax with & 14. To test whether only column C2 is updated, specify & 2.

您必须像这样使用来检查第 2,3 和 4 列是否已更新

IF (COLUMNS_UPDATED() & 14) > 0
--Create Records

对于 UPDATE() 函数,如果给定列已更新,它将返回 Boolean

你可以像这样使用它,

IF ( UPDATE(cnm) OR UPDATE(Country))
--Create records

关于sql-server - update() 和 columns_updated() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29558273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com