首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HashBytes计算列:排除列

HashBytes计算列:排除列
EN

Database Administration用户
提问于 2019-03-01 04:13:00
回答 1查看 487关注 0票数 0

我们想要创建非持久化计算的哈希字节列。表有20列,希望排除IdentityId列。我如何在计算列中做到这一点?是否有一个SQL库函数来排除某些列?目的是为了便于维护,并且随着列的添加,不要让开发人员忘记添加额外的列。因此,哈希字节应该始终接受所有列,排除标识。

这是手动输入所有列的方式:

代码语言:javascript
复制
CREATE TABLE [dbo].[CustomerTransactiont]
(
    CustomerTransactionId int primary key identity(1,1),
    CustomerName varchar(255),
    Price decimal(10,2),
    Quantity int,...
    .....
    RowHash as hashbytes('SHA2_512', CONCAT(CustomerName,'|'
                                                ,Price), '|'
                                                ,Quantity), '|'...
                                                )) 
) 

参考资料:如何为许多列创建哈希计算列?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-03-01 05:09:43

您可以将此脚本作为发布过程的一部分。例如:

代码语言:javascript
复制
declare @script nvarchar(max)
with q as
(
    select   concat(N'
    alter table ',quotename(schema_name(t.schema_id)),'.',quotename(t.name),' drop column if exists RowHash;
    alter table ',quotename(schema_name(t.schema_id)),'.',quotename(t.name),'
    add RowHash as hashbytes(''SHA2_512'', concat('''',',STRING_AGG(cast(quotename(c.name) as nvarchar(max)), ',''|'',') WITHIN GROUP (ORDER BY c.column_id ASC),'));
    ' ) cmd
    from sys.tables t
    join sys.columns c
      on t.object_id = c.object_id
    join sys.types ty 
      on c.user_type_id = ty.user_type_id
    where c.is_identity = 0
     and t.object_id in (select object_id from sys.columns where name = 'RowHash') 
     and c.name <> 'RowHash'
     and t.is_ms_shipped = 0
     and c.is_computed = 0
     and ty.name not in ('hierarchyid','xml', 'geography', 'geometry')
    group by t.object_id, t.schema_id, t.name
)
select @script = string_agg(cast(cmd as nvarchar(max)) , N'
') 
from q

print @script
--set xact_abort on
--begin transaction
--exec sp_executesql @script 
--commit
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/231015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档