3

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

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

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

4

2 回答 2

2

您可以使用触发器来执行此操作,或者您可以使用计算列获得一些接近的结果。对于下面的示例,如果value为 NULL,idOrValue则将显示 id,否则将显示值。您所要求的区别在于,如果将 value 设置回 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
于 2013-08-01T13:46:01.717 回答
1

不,它在Computed column specification > (Formula). 在那里你必须输入ID

如果您将其用作 WHERE 中的条件,则应检查Persisted选项并制作适当的索引。

但是,正如Damien_The_Unbeliever所说,这确实是一个毫无意义的行为。如果您想将其设置为新列的默认值,我相信您必须使用 AFTER TRIGGER。在这种情况下,您正在复制此 SO 讨论

于 2013-08-01T13:35:34.613 回答