我想添加一個默認的限制使用Scalar-valued function
如何定義基於其他列計算的約束列
這些基於另一列一列的例子:
CREATE TABLE [MyTable]
(
[Id] [int] NOT NULL
[ScrambledId] [int] NOT NULL
)
ALTER TABLE [MyTable] ADD DEFAULT (dbo.MakeItScrambled([Id])) FOR [ScrambledId]
CREATE function [dbo].MakeItScrambled(@Value int)
BEGIN
--Some logic
retrun @ScrambledValue
END
我需要的列[ScrambledId]
基於列的待擾亂[Id]
看來,列名是不允許的:
The name "Id" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted.
有什麼建議嗎?
我試過你的第一種方法,我得到一個錯誤:計算列'ScrambledId'不能被持續,因爲列是非確定性的。 –
嗯,是害怕那與一個標量函數..... 2選項然後,要麼刪除持續,並重新計算讀或創建一個更新/插入觸發器 – SQLBadPanda