在已创建表并包含数据后,如何使用NEWSEQUENTIALID()?

在已创建表并包含数据后,如何使用NEWSEQUENTIALID()?,newsequentialid,Newsequentialid,谁能帮我做这个吗。我有一个不是唯一的表(因为我正在翻找我前任的旧数据库) 我想把它分配到我的水果表中的“ID”字段 我想继续并设置NEWSEQUENTIALID(),这样我就可以看到我正在使用的所有内容。假设ID是uniqueidentifier类型,您可以创建另一个列,默认使用顺序GUID。这将填充该列中的值。之后,您可以将这些值复制到id列,然后删除tmp列。输入所有数据后,请为id列指定默认值。请参见下面的SQL脚本: --创建一个默认为顺序ID的新列 USE [BASKET] ALTER

谁能帮我做这个吗。我有一个不是唯一的表(因为我正在翻找我前任的旧数据库)

我想把它分配到我的水果表中的“ID”字段


我想继续并设置NEWSEQUENTIALID(),这样我就可以看到我正在使用的所有内容。

假设ID是uniqueidentifier类型,您可以创建另一个列,默认使用顺序GUID。这将填充该列中的值。之后,您可以将这些值复制到id列,然后删除tmp列。输入所有数据后,请为id列指定默认值。请参见下面的SQL脚本:

--创建一个默认为顺序ID的新列

USE [BASKET]
ALTER TABLE [FRUITS]
ADD  [TMPID] UNIQUEIDENTIFIER NOT NULL  CONSTRAINT DF_TMPID DEFAULT NEWSEQUENTIALID()
GO
--使用新创建的值更新现有id列值

UPDATE [FRUITS] SET ID = TMPID GO
--移除约束

ALTER TABLE [FRUITS] DROP CONSTRAINT DF_TMPID GO
--移除临时列

ALTER TABLE [FRUITS] DROP COLUMN TMPID GO 
--为新插入的默认值指定默认值

ALTER TABLE [FRUITS]  ADD DEFAULT NEWSEQUENTIALID() FOR ID
--或--

创建过程[dbo].[uspGetSequentialGuids](@RequiredGuids as int)
作为
将@SequentialGuids声明为表(SequentialGuid uniqueidentifier默认NEWSEQUENTIALID()主键,InitDate datetime)
声明@Counter int
设置@Counter=0
而@Counter<@RequiredGuids
开始
插入@SequentialGuids(InitDate)值(GETDATE());
设置@Counter=@Counter+1
结束
从@SequentialGuids中选择SequentialGuid
去

如果出于某些特殊目的需要,上面的
将返回所需数量的顺序GUID。也可以创建临时表而不是内存中的表。如果出于某些特殊目的需要,上面将返回顺序guid。
ALTER TABLE [FRUITS] ADD CONSTRAINT DF_ROWGUID DEFAULT NEWSEQUENTIALID()  FOR ID;
CREATE PROCEDURE [dbo].[uspGetSequentialGuid] 
AS
DECLARE @SequentialGuids as Table ( SequentialGuid uniqueidentifier DEFAULT NEWSEQUENTIALID() PRIMARY KEY,InitDate  datetime  )
BEGIN
INSERT INTO @SequentialGuids(InitDate) Values(GETDATE());
END
SELECT   SequentialGuid from @SequentialGuids
GO
CREATE PROCEDURE [dbo].[uspGetSequentialGuids](@RequiredGuids as int) 
AS
DECLARE @SequentialGuids as Table ( SequentialGuid uniqueidentifier DEFAULT NEWSEQUENTIALID() PRIMARY KEY,InitDate  datetime  )
Declare @Counter int
SET @Counter = 0
While @Counter < @RequiredGuids
BEGIN
INSERT INTO @SequentialGuids(InitDate) Values(GETDATE());
SET @Counter = @Counter + 1
END
SELECT   SequentialGuid from @SequentialGuids
GO