3 database-design sql-server sql-server-2016 computed-column
有谁知道如何创建一个哈希计算列持久化?我不断收到以下错误。否则,我将不得不每次都使用更新或触发语句。我知道如何进行单列,但是现在这包括多列。
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', (select CustomerName
,Price
,Quantity for xml raw)) persisted
)
Msg 1046, Level 15, State 1, Line 7
Subqueries are not allowed in this context. Only scalar expressions are allowed.
Run Code Online (Sandbox Code Playgroud)
只需将您的列连接在一起,而不是尝试将它们转换为 xml,然后再转换为哈希。
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( UPPER(COALESCE(CustomerName, '')), '|'
, COALESCE(CONVERT(VARCHAR(50), Price), ''), '|'
, COALESCE(CONVERT(VARCHAR(20), Quantity), ''), '|'
)) persisted
)
Run Code Online (Sandbox Code Playgroud)
注意:合并和管道字符仅用于示例。如果您希望哈希区分大小写,则 Upper 是可选的。
归档时间: |
|
查看次数: |
6725 次 |
最近记录: |