在调试tsqlt代码期间,我直接运行了以下语句,而没有将其包装为sp,并且删除了原始表约束,并从原始表中丢失了一些数据。
Exec tSQLt.FakeTable @TableName = N'DBO.Employee',@Identity=1;Exec tSQLt.FakeTable @TableName = N'DBO.Salary',@Identity=1;
如何防止在tsqlt中运行faketable语句影响原始表?
发布于 2022-04-22 20:57:26
没有办法阻止在框架之外执行tSQLt.FakeTable。我们也有很好的理由不去阻止这种情况,所以我不认为添加这种功能是正确的方法。
但是,如果使用的是最新版本的tSQLt,则可以使用tSQLt.UndoTestDoubles返回原始对象。
发布于 2022-04-22 14:28:37
呃,去过.您无法阻止它,除非为项目做出贡献,并在其中添加一个拉请求来添加功能。
FakeTable为您的原始表创建一个备份,因此您应该能够获得原始表。这些备份表名以tSQLt.tempobject开头,以标识符结尾。您可以删除新的“假”表(该表现在具有原始表的名称),并在找到时重命名tempobject表。
我过去做过的事情是查询表中已知的列,以查找tSQLt表的名称:
SELECT t.name
FROM sys.columns c
INNER JOIN sys.tables t ON t.object_id = c.object_id
WHERE c.name = 'SomeCol';https://stackoverflow.com/questions/71970240
复制相似问题