似乎没有任何方法可以伪造一个表,然后在伪造的表上运行SCOPE_IDENTITY函数。
取这个语句(在存储过程中)
INSERT INTO [dbo].[SomeTable](Id1, Id2)
VALUES (@Id1, @Id2)
SET @SomeIdentity = SCOPE_IDENTITY()
INSERT INTO [dbo].[Table2](Id3)
VALUES(@SomeIdentity)
如果我试着测试这段代码
我将像这样创建table [SomeTable]
EXEC [tSQLt].[FakeTable] @TableName = N'[SomeTable]',
@SchemaName = N'dbo',
@Identity = 0,
@ComputedColumns = 1,
@Defaults = 1
EXEC [tSQLt].[FakeTable] @TableName = N'[Table2]',
@SchemaName = N'dbo',
@Identity = 0,
@ComputedColumns = 1,
@Defaults = 1
但是,当涉及到测试具有范围标识列的代码块时,Id3总是空的。
我已经尝试过identity = 0或1,但T-SQL似乎无法处理这种情况。
有人解决了这个问题吗?
使用tSQLt.FakeTable
时,需要将@identity
参数设置为1以保留标识列:
EXEC [tSQLt].[FakeTable]
@TableName = N'dbo.[SomeTable]',
@Identity = 1,
@ComputedColumns = 1,
@Defaults = 1
(注意:@SchemaName参数已弃用)