在寻求将Microsoft SQL Server从2014年升级到2016年的过程中,我运行了Microsoft的数据迁移助手,并在使用表中的视图时发现了WITH CHECK OPTION
的重大更改。
虽然通过微软的各个页面寻求帮助,但似乎它们都是死路一条。我们目前的兼容版本是120,一个修复选项是降级到90;但这是不可能的。
代码破解是:
CREATE VIEW [table]
AS
SELECT TOP 1000000
[Id],
[UserName],
[Firstname]
FROM
[Users] WITH (NOLOCK)
WITH CHECK OPTION
GO
有人对此有解决方法吗?否则似乎升级到2016版本将无法正常工作。
答案 0 :(得分:3)
因此,如果您按照MSDN
官方文档Create View (Transact-SQL)进行操作,则会在 UPDATABLE VIEWS 部分中注明以下内容:
只要满足以下条件,您就可以通过视图修改基础基表的数据:
...
TOP
不会在视图的select_statement中与WITH CHECK OPTION
子句一起使用。
因此,SQL Server
团队极有可能将这种不可能性强制为CHECK
强制对视图执行的数据修改语句遵循select_statement中设置的条件。
显然,你将无法正常编辑组合的代码,所以答案很清楚。