gpt4 book ai didi

sql - 如果列已更新,则将变量用于 UPDATE() 检查器

转载 作者:行者123 更新时间:2023-12-04 18:23:52 27 4
gpt4 key购买 nike

是否可以在 UPDATE() 中使用变量来检查列是否已更新?

这是我的示例代码:

DECLARE @ColumnCount int
DECLARE @ColumnCounter int
DECLARE @ColumnName nvarchar(MAX)

SET @ColumnCounter = 0

SELECT @ColumnCount = COUNT(c.COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = 'Province'
WHILE @ColumnCount >= @ColumnCounter
BEGIN
SELECT @ColumnName = c.COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = 'Province' AND c.ORDINAL_POSITION = @ColumnCounter
IF (UPDATE(@ColumnName))
SET @ColumnCounter = @ColumnCounter + 1
END

最佳答案

检查列是否在更新触发器后实际更新您可以使用 deletedinserted 特殊表 msdn其中触发代码可以找到更新表行的新旧版本

请记住,在每个表格中可以找到不止 1 行。例如你执行update table1 set col1 = value1 where some_condition in trigger number of rows infacts by some_condition, will be presented in inserted删除

要在触发器中找出某些列实际更新的行,您可以在某些主键上连接插入和删除的表并比较该列的值

update() 函数将列名作为参数,而不是将名称作为值的字符串变量

例如在触发器中使用 update() 检查 thissome_column 出现在 update set 语句中时,update(some_column) 为真,即使列的值不变。

似乎您无法编写通用触发器来计算更新的列数,如果您需要该计数,则需要使用类似这样的东西为每个表手动编写触发器

declare @count int = 0
if update(col1) set @count = @count + 1
if update(col2) set @count = @count + 1
...

关于sql - 如果列已更新,则将变量用于 UPDATE() 检查器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50881273/

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