2017-05-25 42 views
0

在SQL Server中,我創建了一個包含兩列的視圖。一個正常的列和一個計算的哈希列。我需要在這兩列上創建一個唯一的約束。嘗試添加約束或索引會導致由於GetHash UDF導致的錯誤。如何索引計算出的哈希列

CREATE VIEW HashView 
WITH SCHEMABINDING  
AS 
SELECT p.ItemId, [dbo].[GetHash](p.Id) as PriceHash from dbo.price p 

有沒有辦法解決這個問題或者我需要訴諸使用觸發一個簡單的方法?

+0

創造獨特的複合約束有什麼功能呢?與['HASHBYTES()'](https://docs.microsoft.com/zh-cn/sql/t-sql/functions/hashbytes-transact-sql)相同? – scsimon

回答

0

讓你的看法是這樣,

CREATE VIEW HashView 
WITH SCHEMABINDING  
AS 
SELECT p.ItemId,p.Id, [dbo].[GetHash](p.Id) as PriceHash from dbo.price p 

然後在itemid的和id照常

CREATE UNIQUE INDEX IX_HashView ON dbo.HashView(itemid,id) 
GO