我想添加一个默认的限制使用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