【问题标题】:"WITH CHECK OPTION" and "TOP" causes error when upgrading to SQL Server 2016升级到 SQL Server 2016 时,“WITH CHECK OPTION”和“TOP”会导致错误
【发布时间】:2017-07-20 03:25:20
【问题描述】:

在寻求将 Microsoft SQL Server 从 2014 年升级到 2016 年时,我运行了 Microsoft 的数据迁移助手,并在使用表中的视图时发现了 WITH CHECK OPTION 的重大更改。

在浏览 Microsoft 的各种页面寻求帮助时,它们似乎是死胡同。我们当前的兼容版本是 120,修复的一个选项是降级到 90;然而这是不可能的。

代码破解是:

CREATE VIEW [table]
AS  
    SELECT TOP 1000000
        [Id],
        [UserName],
        [Firstname]
    FROM 
        [Users] WITH (NOLOCK)
    WITH CHECK OPTION 
GO

有人解决这个问题吗?不然升级到2016版好像不行。

【问题讨论】:

  • 为什么那个视图需要那个选项?
  • @artm 我删除了字段,隐私问题,如果您对此感到困惑的话。

标签: sql sql-server tsql sql-server-2014 sql-server-2016


【解决方案1】:

因此,如果您遵循MSDN 官方文档Create View (Transact-SQL),您将在UPDATABLE VIEWS 部分中注意到以下内容:

只要满足以下条件,就可以通过视图修改底层基表的数据:

...

TOP 不与WITH CHECK OPTION 子句一起在视图的 select_statement 中的任何地方使用。

因此SQL Server 团队很有可能将这种不可能性作为 CHECK 强制执行

强制对视图执行的数据修改语句遵循 select_statement 中设置的条件。

显然,您将无法正常编辑合并后的代码,所以也许答案很清楚。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多