問題は Fitnesse ではなく、SQL エンジンにあります。SQL Server Management Studio で同じクエリを実行すると、同じエラーが発生します。set identity_insert on
したがって、実際に質問する必要がある質問を使用できないという制限がある場合、Fitnesse とは無関係に SQL Server に挿入可能なフィールドのないレコードを挿入する方法は? この StackOverflow の投稿は、簡単な答えを提供します。
INSERT INTO #TempTable DEFAULT VALUES
これを手にしたら、次はこれを Fitnesse にマッピングします。ここに1つの解決策があります:
!|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 値を直接収集することはできません。最後のクエリは、挿入されたばかりの ID 値を取得する 1 つの方法を提供します。