SQL Server:如何从 VIEW 中获取序列的 NEXTVAL?

Posted

技术标签:

【中文标题】SQL Server:如何从 VIEW 中获取序列的 NEXTVAL?【英文标题】:SQL Server : how to get NEXTVAL of sequence from VIEW? 【发布时间】:2018-12-07 13:58:38 【问题描述】:

我在 SQL Server 中遇到了从视图中获取序列的 nextval 的问题。 我知道 Oracle 和 PostgreSQL 这个案例的解决方案:

创建序列; 创建函数/过程,调用序列; 创建视图,调用函数/过程;

但在 SQL Server 中,由于系统限制,这种方法不起作用。

【问题讨论】:

有一个 SEQUENCE 解决方案来获取下一个 Int/bigint 值(使用 SQL Server 2012)。但我不明白你为什么要在视图中使用下一个值。每次执行您都会看到差异编号。也许你的意思是 row_number() 为什么视图会增加序列?这根本没有意义。这可能试图解决什么样的现实世界情况? @SeanLange 。 . .这将是一种计算视图中的行被访问的次数的方法。 我有一个应用程序应该得到一个递增的值。但此应用仅适用于视图。 @GordonLinoff,这是一个我有点喜欢的鬼鬼祟祟的小把戏。我会把它放在我的后口袋里。谢谢! 【参考方案1】:

看看这个。你可以使用ROW_NUMBER()

--DROP TABLE TestTable
--GO
CREATE TABLE TestTable
(
    id  INT identity(1,1)
    ,[Name] VARCHAR(100)
)
GO
INSERT INTO TestTable
VALUES
('A'),('B'),('C'),('D'),('E'),('F')
GO

--DROP VIEW TestView
--GO
CREATE  VIEW TestView
AS
SELECT   Id
        ,[Name]
        ,ROW_NUMBER() OVER (ORDER BY ID) A
FROM TestTable
GO

SELECT * FROM TestView

【讨论】:

这不会做 OP 想要的。他们想要一个持久的价值,但这并没有做到这一点。或者阅读 cmets 可能他们不会,在这种情况下,这正是他们所需要的。

以上是关于SQL Server:如何从 VIEW 中获取序列的 NEXTVAL?的主要内容,如果未能解决你的问题,请参考以下文章

从 SQL Server SEQUENCE 获取当前值

使用 VBA 从 SQL Server 查询 VIEW

如何使用实体框架在 Sql Server Express 中获取下一个序列号?

从多个表中创建 Sql Server VIEW GROUPing BY,选择子查询作为别名

如何使用 BCP 或 Sql Server Management Studio 从 Sql Server 中获取 BLOB 数据?

如何从SQL Server中的重复行中获取最后一行?