默认绑定行ID

时间:2013-08-01 13:30:57

标签: sql-server

我的数据库表中有一个字段,我想为其分配一个默认绑定。该值应与生成的行ID相同。

是否可以在设计视图的“默认绑定”选项中执行此操作?我正在使用SQL Server 2008。

编辑:这样做的目的是复制的ID可以在以后更改。复制的字段表示表的sortingKey。可以通过切换两行的sortedKeys来更改表的排序。

2 个答案:

答案 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