我的数据库表中有一个字段,我想为其分配默认绑定。该值应与生成的行 ID 相同。
是否可以在设计视图的“默认绑定”选项中执行此操作?我正在使用 SQL Server 2008。
编辑:这样做的目的是复制的 ID 可以在以后更改。复制的字段代表表的sortingKey。可以通过切换两行的sortingKey来改变表格的排序。
我的数据库表中有一个字段,我想为其分配默认绑定。该值应与生成的行 ID 相同。
是否可以在设计视图的“默认绑定”选项中执行此操作?我正在使用 SQL Server 2008。
编辑:这样做的目的是复制的 ID 可以在以后更改。复制的字段代表表的sortingKey。可以通过切换两行的sortingKey来改变表格的排序。
您可以使用触发器来执行此操作,或者您可以使用计算列获得一些接近的结果。对于下面的示例,如果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
不,它在Computed column specification > (Formula)
. 在那里你必须输入ID
。
如果您将其用作 WHERE 中的条件,则应检查Persisted
选项并制作适当的索引。
但是,正如Damien_The_Unbeliever所说,这确实是一个毫无意义的行为。如果您想将其设置为新列的默认值,我相信您必须使用 AFTER TRIGGER。在这种情况下,您正在复制此 SO 讨论。