gpt4 book ai didi

sql - tSQLt.FakeTable 似乎不适用于具有常量/派生字段的 View

转载 作者:行者123 更新时间:2023-12-03 01:21:25 30 4
gpt4 key购买 nike

exec tSQLt.SetFakeViewOn 'dbo.viewWithIssues';
GO
CREATE PROCEDURE TestChanges.[Test Data]
AS
BEGIN
...

exec tSQLt.FakeTable 'dbo.viewWithIssues', @identity=1, @ComputedColumns=1, @Defaults=1;
INSERT INTO dbo.viewWithIssues (clock_id, IsTerminated)
VALUES ('1111', '0'), ('2222', '1'), ('3333', '1')

...
END
GO
exec tSQLt.SetFakeViewOff 'dbo.viewWithIssues';
GO

然后在调用过程后继续填充#Actual 和#Expected。它返回的错误是:更新或插入 View 或函数“dbo.viewWithIssues”失败,因为它包含派生字段或常量字段。

有人知道如何解决这个问题吗?

最佳答案

问题是 SQL Server 在编译时捕获了这个,因此 FakeTable 永远不会被执行。这就是 SetFakeViewOn 应该捕获的内容,但它目前无法可靠地工作。除了将插入和更新放入动态 SQL 之外,目前没有真正干净的方法来解决这个问题:

CREATE PROCEDURE    TestChanges.[Test Data]
AS
BEGIN
...

exec tSQLt.FakeTable 'dbo.viewWithIssues', @identity=1, @ComputedColumns=1, @Defaults=1;
EXEC('INSERT INTO dbo.viewWithIssues (clock_id, IsTerminated)'+
'VALUES (''1111'', ''0''), (''2222'', ''1''), (''3333'', ''1'');');

...
END

关于sql - tSQLt.FakeTable 似乎不适用于具有常量/派生字段的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14965427/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com