繁体   English   中英

从FitNesse中具有单个标识列的表中获取标识值

[英]Getting the identity value from a table with single identity column in FitNesse

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

例如:

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

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

导致以下异常:

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

还有另一种方法可以做到这一点吗?

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

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值。 最终查询为您提供了一种获取刚插入的身份值的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM