簡體   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