如何在已创建表并具有数据后使用NEWSEQUENTIALID()?

时间:2014-08-04 16:46:40

标签: newsequentialid

请有人帮我这个。我有一张并不独特的桌子(因为我正在翻阅我前任的旧数据库。)

我想将它分配到我拥有的Fruits表中的“ID”字段。

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

3 个答案:

答案 0 :(得分:1)

假设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

- 或 -

ALTER TABLE [FRUITS] ADD CONSTRAINT DF_ROWGUID DEFAULT NEWSEQUENTIALID()  FOR ID;

答案 1 :(得分:0)

foreach ($_POST['input_box_one'] as $v) {

   echo $v . '<--- i am your value<br>';

}

Result
------
inputboxvalue1
inputboxvalue2
inputboxvalue3
etc....

答案 2 :(得分:0)

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