1

良い一日!ストアド プロシージャに問題があります。コードは次のとおりです。

INSERT INTO dbo.CS_RefQuestionChoice(ChoiceDescription, QuestionID, RatingID, SetID)

SELECT @choice, @@IDENTITY,@ratingid,1 FROM CS_RefQuestions

コードはスムーズに実行されていますが、データベースに 75 レコードが保存されるため、問題が発生しています。保存するのは 1 つだけです。これを実行したいのは、別の選択肢を保存するときだけです。最新の主キーも保存する必要があります。関係を目的とした CS_RefQuestions。

4

5 に答える 5

1

質問を誤解していた場合は申し訳ありませんが、ステートメントのOUTPUT句を使用して問題を解決できるようです - MSDN ブログINSERTで見つけることができる説明の 1 つ

于 2013-07-10T09:47:31.200 に答える
0
DECLARE @ident int    
SET @ident = IDENT_CURRENT(dbo.CS_RefQuestionChoice) AS Current_Identity
INSERT INTO dbo.CS_RefQuestionChoice(ChoiceDescription, QuestionID, RatingID, SetID)

SELECT @choice, @ident ,@ratingid,1 FROM CS_RefQuestions
于 2013-07-10T06:42:53.850 に答える
0
 INSERT INTO dbo.CS_RefQuestionChoice
       ( ChoiceDescription, 
         QuestionID, 
         RatingID, 
         SetID
       )
SELECT choice, 
       QuestionChoiceID, 
       ratingid,
       1 
  FROM CS_RefQuestions   
  WHERE QuestionChoiceID = SCOPE_IDENTITY() 

QuestionChoiceIDCS_RefQuestions テーブルの ID 列の名前は だと思います。

于 2013-07-10T05:58:36.947 に答える
0

すべてのフィードバックに感謝します。私の質問が理解しにくいことは承知していますが、友人の助けを借りて質問に答えることができます。必要なコードは次のとおりです。

USE [CCBBS_Survey_DB]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SaveNewQuestionChoice]
@question VARCHAR(200),
@choice VARCHAR(100),
@qno INT,
@categid int,
@ratingid int
AS
BEGIN

IF NOT EXISTS(SELECT QuestionNo FROM CS_RefQuestions where QuestionNo = @qno)
    BEGIN
         INSERT INTO CS_RefQuestions(Question,QuestionNo,CategoryID, SetID)
         VALUES (@question, @qno, @categid, 1)
    END
ELSE
    BEGIN
        UPDATE  CS_RefQuestions 
        SET     Question = @question
                ,CategoryID = @categid
        WHERE QuestionNo = @qno
    END

 DECLARE @QUI INT

 SET @QUI = (SELECT TOP(1) QuestionID FROM CS_RefQuestions where QuestionNo = @qno)


 INSERT INTO dbo.CS_RefQuestionChoice(ChoiceDescription, QuestionID, RatingID, SetID)

 SELECT @choice, @QUI, @ratingid,1 FROM CS_RefQuestions RQ

 WHERE QuestionID = @QUI 

END
于 2013-07-10T07:03:32.263 に答える