Vac*_*ano 15 t-sql sql-server sql-server-2008
假设我有一个表变量:
DECLARE @MyTableVar TABLE (ID INT IDENTITY(1,1), SomeData NVARCHAR(300))
Run Code Online (Sandbox Code Playgroud)
插入250行后,我需要使用表格"重新开始".我这样做:
DELETE FROM @MyTableVar
Run Code Online (Sandbox Code Playgroud)
我可以对table变量做什么,以便:
insert into @MyTableVar Values("TestData")
select * from @MyTableVar
Run Code Online (Sandbox Code Playgroud)
将返回此:
_______________________________ | ID | SomeData | |___________|_________________| | | | | 1 | TestData | |___________|_________________|
而不是这个:
_______________________________ | ID | SomeData | |___________|_________________| | | | | 251 | TestData | |___________|_________________|
Tho*_*mas 15
相反,依赖于身份,为什么不使用新的排名功能,如Row_Number
Insert @MyTableVar( Id, Value )
Select Row_Number() Over ( Order By Value )
, Value
From SomeOtherTable
Run Code Online (Sandbox Code Playgroud)
与其重新播种 IDENTITY,为什么不直接从 @table 变量中删除,然后对输入使用 ROW_NUMBER() 呢?例如,而不是懒惰
SELECT * FROM @MyTableVar;
Run Code Online (Sandbox Code Playgroud)
...用...
SELECT ID = ROW_NUMBER() OVER (ORDER BY ID), SomeData FROM @MyTableVar;
Run Code Online (Sandbox Code Playgroud)
现在你不需要关心种子是什么,它是否从 1 开始,是否有任何间隙等等。
归档时间: |
|
查看次数: |
26822 次 |
最近记录: |