使用uniqueidentifier列创建视图

时间:2013-01-25 15:41:29

标签: sql-server sql-server-2008

我需要从数据库中的表中获取数据,在我的情况下是dbo.EventsCollage并为它创建一个View。

View应包含所有基于表的记录,另外我应该添加一个名为Id datatype uniqueidentifier的列。

应为视图

中显示的每个记录自动创建uniqueidentifier值(随机生成)

这是我如何创建视图

CREATE VIEW testView
AS
SELECT
x.Name
FROM dbo.EventsCollage as x;

你能指点一下代码示例吗?

3 个答案:

答案 0 :(得分:2)

使用newId()。 ( 注意:每次选择 时,每行会为您提供一个新ID)

CREATE VIEW testView
AS
SELECT
newId() Id, x.Name
FROM dbo.EventsCollage as x;

DEMO - 1

或者,如果每次都需要每行具有相同的uniqueidentifier,请尝试( 注意:这将只能处理100mil记录

CREATE VIEW testView
AS

SELECT convert(uniqueidentifier,
       stuff('62799568-6EF2-4C95-84E7-4953A6959C99',1,len(rn),convert(varchar,rn))) id,
       T.Name
FROM ( 
  select x.Name,  ROW_NUMBER() over (order by x.Name) rn
FROM dbo.EventsCollage as x ) T;

DEMO - 2

答案 1 :(得分:0)

我认为你需要考虑使用NEWID()

CREATE VIEW testView
AS
SELECT
x.Name, NEWID() as youruniquecol
FROM dbo.EventsCollage as x;

这是SQL Fiddle

祝你好运。

答案 2 :(得分:0)

你也可以这样做:

SELECT ROW_NUMBER() OVER( ORDER BY col1 ) AS id, col1, col2, col3
FROM MyResults

请参阅: Add Identity column to a view in SQL Server 2008