有没有一种方法可以将自动递增的标识int列自动复制到另一列?
create table dbo.CopyOfIdColumn
(
myIdCol int identity(1,1)
,copyOfMyIdCol int Default (I WANT THE DEFAULT TO BE WHATEVER THE VALUE OF myIdCol IS)
)
我知道我可以包装存储过程,并只使用Best way to get identity of inserted row?帖子中的内容(可能是SCOPE_IDENTITY())基于插入的记录来更新条目,但是我希望有一种更简单/更轻松的方法。 / p>
谢谢。
更新: 根据Panagiotis Kanavos的建议,更新问题以更好地表明我想要实现的目标。
我想做的是有一列,指示行的父级(通常是其自身)。我希望该列不具有空值。
我也不要多余的桌子。父母和孩子有相同的数据,我不想有一个只包含parentIds的表。他的建议是,我可以使用默认约束来实现这一目标。
答案 0 :(得分:0)
您可以创建一个序列,然后在插入的行中使用它,例如:
CREATE SEQUENCE Schema.Sequence
AS int
INCREMENT BY 1 ;
您的插入内容如下:
DECLARE @NextID int ;
SET @NextID = NEXT VALUE FOR Schema.Sequence;
-- Some work happens
INSERT Test.Orders (OrderID, ColumnWithID, Name, Qty)
VALUES (@NextID, @NextID, 'Rim', 2) ;
GO
答案 1 :(得分:0)
使用如下计算字段:
create table #temp
(
myIdCol int identity(1,1),
othercolumn varchar(20),
copyOfMyIdCol as myIdCol
)
--TESTING
insert into #temp (othercolumn)
values('a'),('b')
select * from #temp