【问题标题】:Getting the identity value from a table with single identity column in FitNesse从 FitNesse 中具有单个标识列的表中获取标识值
【发布时间】:2012-09-12 06:49:44
【问题描述】:

FitNesse/dbFit 是否支持插入具有单个标识列的表中,然后将该值返回到变量中?

例如:

create table TestTable ( ID int identity(1,1) )

!|Insert|TestTable|
|ID?              |
|>>TestID         |

导致以下异常:

System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near ')'.

还有其他方法可以做到这一点吗?

【问题讨论】:

  • 另外,有多个表需要执行此操作,因此我不能有多个“set identity_insert on”语句。

标签: sql testing integration-testing fitnesse dbfit


【解决方案1】:

您的问题不在于 Fitnesse,而在于 SQL 引擎。如果您在 SQL Server Management Studio 中尝试相同的查询,您将收到相同的错误。因此,鉴于您不能使用set identity_insert on 的限制,您真正需要问的问题是如何在 SQL Server 中插入一条没有可插入字段的记录独立于 FitnesseThis StackOverflow post 提供了一个简单的答案:

INSERT INTO #TempTable DEFAULT VALUES

有了它,现在的任务是将它映射到 Fitnesse。这是一种解决方案:

!|execute|CREATE TABLE #TestTable ( ID int identity(1,1) )|

!|execute|INSERT INTO #TestTable DEFAULT VALUES|

!|query|SELECT TOP 1 @@IDENTITY [ID] FROM #TestTable|
|ID?                                                |
|>>TestID                                           |

Fitnesse 的 INSERT 命令不支持默认构造,因此您必须切换到更通用的 EXECUTE 命令来执行插入操作。但是,这不会返回结果,因此您无法直接收集自动插入的 ID 值。最后的查询为您提供了一种获取刚刚插入的标识值的方法。

【讨论】:

    猜你喜欢
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多