Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL server中的OUTPUT$action,为特定列的更新行输出加上大小写_Sql Server_Output_Upsert_Sql Merge - Fatal编程技术网

Sql server SQL server中的OUTPUT$action,为特定列的更新行输出加上大小写

Sql server SQL server中的OUTPUT$action,为特定列的更新行输出加上大小写,sql-server,output,upsert,sql-merge,Sql Server,Output,Upsert,Sql Merge,我正在对我的数据仓库进行合并升级。我不需要保存这个特定对象的历史记录,所以我使用的是一种类型,我在慢慢改变维度。我正在使用OUTPUT$action,以便跟踪每天发生的更新和插入次数 我的目标是跳过更新特定列(特别是年龄)时的日志记录步骤,因为我希望每个过生日的人都能更改年龄(出于隐私考虑,我不能在对象中包含生日)。不希望在日志记录中计算这些更新 到目前为止,我的日志记录是: OUTPUT $action, CASE $action WHEN 'UPDATE' THEN 'Found

我正在对我的数据仓库进行合并升级。我不需要保存这个特定对象的历史记录,所以我使用的是一种类型,我在慢慢改变维度。我正在使用
OUTPUT$action
,以便跟踪每天发生的更新和插入次数

我的目标是跳过更新特定列(特别是年龄)时的日志记录步骤,因为我希望每个过生日的人都能更改年龄(出于隐私考虑,我不能在对象中包含生日)。不希望在日志记录中计算这些更新

到目前为止,我的日志记录是:

OUTPUT $action, 
CASE $action 
    WHEN 'UPDATE' THEN 'Found matching key: updated existing record' 
    WHEN 'INSERT' THEN 'No matching key: inserted new record'
     END 
INTO @SummaryOfChanges(Change, Reason)
我想添加这样的逻辑:如果列
age
是更新的列,那么跳过日志记录步骤

$action
中插入和删除的部分不同,我看不到回调更新行信息的方法。我在
OUTPUT
步骤中尝试了各种
CASE
语句,但不知道如何检查
age
是否是行合并期间更新的列之一。在
OUTPUT
子句中,我似乎无法检查源和目标
age
是否匹配


有什么想法吗?谢谢大家!

您可以使用。您可以在插入时执行类似于
CASE.age!=已删除。年龄然后为1,否则为0结束
。您可能需要处理空值。谢谢Steven-我找到了用于插入和删除的命令,但不用于更新,因为我没有插入或删除这些行。您知道是否有一个
更新的
特殊表格吗?
更新
会删除一个旧的行,然后插入一个新行,因此,您应该查看
deleted
inserted
特殊表。我认为merge命令的
UPDATE
部分会更新现有记录,而不是删除或插入记录。更新行的自动递增主键不会更改。它看起来确实是一个标准的更新。可能这些信息没有记录在特殊表格中?谢谢你,弗拉基米尔,谢谢你,史蒂文!你们太棒了!完全正确。因为我的自动递增键没有更改,而且语法看起来像是直接更新,所以我错误地认为这些更改没有记录到
UPDATED
DELETED
。现在我看到他们了!首先,我检查ISNULL(inserted.age,)=ISNULL(deleted.age,)时的
大小写,然后检查标准日志,否则
NULL
。在插入日志时,我只需检查原因不为NULL的
。工作起来很有魅力。