2012-09-12 93 views
0

FitNesse/dbFit是否支持插入到具有單個標識列的表中,然後將該值返回給變量?從FitNesse中的單一標識列表獲取標識值

例如:

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

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

導致以下異常:

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

有另一種方式來做到這一點?

+0

此外,有多個表需要發生這種情況,所以我不能有多個'set identity_insert on'語句。 – sduplooy

回答

0

你的問題不是與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值。最後的查詢爲您提供了一種方法來獲取剛剛插入的標識值。