我的数据库表中有一个字段,我想为其分配一个默认绑定。该值应与生成的行ID相同。
是否可以在设计视图的“默认绑定”选项中执行此操作?我正在使用SQL Server 2008。
编辑:这样做的目的是复制的ID可以在以后更改。复制的字段表示表的sortingKey。可以通过切换两行的sortedKeys来更改表的排序。
答案 0 :(得分:2)
您可以使用触发器执行此操作,或者使用计算列接近某些内容。如果value
为NULL,则使用下面的示例,idOrValue
将显示id,否则将显示值。您要求的是,如果将值设置回null,则计算列将恢复为id,如果默认情况下这是可能的,那么您将返回null。
<强> T-SQL 强>
IF OBJECT_ID('tempdb..#t1') is not null DROP TABLE #t1
CREATE TABLE #t1 (
id INT IDENTITY,
value INT,
idOrValue AS coalesce(value, id)
)
INSERT INTO #t1 VALUES
(1), (NULL)
SELECT * FROM #t1
<强>输出强>
id value idOrValue
1 1 1
2 NULL 2
答案 1 :(得分:1)
不,它在Computed column specification > (Formula)
。
在那里你必须输入ID
。
如果您在WHERE中将其用作条件,则应检查Persisted
选项并制作适当的索引。
然而,正如Damien_The_Unbeliever所说,这真是一个毫无意义的行动。如果要将其设置为新列的默认值,我相信您必须使用AFTER TRIGGER。在这种情况下,您正在复制this SO discussion。