Sql server 默认绑定行ID

Sql server 默认绑定行ID,sql-server,Sql Server,我的数据库表中有一个字段,我想给它分配一个默认绑定。该值应与生成的行ID相同 是否可以在设计视图的“默认绑定”选项中执行此操作?我正在使用SQLServer2008 编辑:这样做的目的是复制的ID可以在以后更改。复制的字段表示表的排序键。可以通过切换两行的排序键来更改表的排序 否,它在计算列规范>(公式)中。 您必须在此处输入ID 如果将其用作WHERE中的条件,则应选中持久化选项并创建适当的索引 然而,正如不信者达米恩所说,这确实是一个毫无意义的行动。如果要将其设置为新列的默认值,我相信必须使

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

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


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

否,它在
计算列规范>(公式)
中。 您必须在此处输入
ID

如果将其用作WHERE中的条件,则应选中
持久化
选项并创建适当的索引


然而,正如不信者达米恩所说,这确实是一个毫无意义的行动。如果要将其设置为新列的默认值,我相信必须使用AFTER触发器。在这种情况下,您正在进行复制。

您可以使用触发器执行此操作,也可以使用computed column进行复制。下面的例子中,如果
value
为NULL,则
idOrValue
将显示id,否则将显示value。您所要求的不同之处在于,如果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

您正在使用SQLServerManagementStudio,对吗?哪个版本?对于您试图解决的任何问题,
NULL
不可能表示“使用此行的
ID
列”吗?这将迫使它始终等于
ID
列,这几乎是您所希望的无意义。具有默认值的列可以在单个行中更改,我认为这是OP正在寻求的行为。@Damien_the_unsiever:正是我的想法。我犯了错,我想要分数。我会更新我的答案。一个有点复杂的解释,但这是一个很好的显示什么OP可能会使用,如果适用。我将使用触发解决方案,因为这最适合我的目的。非常感谢。