0

コンポーネントSwingを使用してJavaアプリケーションを作成していますが、ストアドプロシージャを作成して4つの値をテーブルに挿入する方法や、トリガーを使用する方がよいかどうかわかりません。これは私のインターフェースです:

Question: ______textbox_____      correct answer:(bonne reponse )
Reponse A: _____textbox______     *A (Radio button)
Reponse B: _____textbox______     *B (Radio button)   [Add button]
Reponse C: _____textbox______     *C (Radio button)
Reponse D: _____textbox______     *D (Radio button)
(levels)Paliers: _______ComboBox___

そして、それらはmysqlの私のテーブルです

-- -----------------------------------------------------
-- Table `mydb`.`questions`
-- -----------------------------------------------------
CREATE  TABLE `questions` (
  `idquestion` INT NOT NULL AUTO_INCREMENT ,
  `question` VARCHAR(150) NULL ,
  `palier_fk` INT NULL ,
  PRIMARY KEY (`idquestion`) ,
  INDEX `palier_fk` (`palier_fk` ASC) ,
  CONSTRAINT `palier_fk`
    FOREIGN KEY (`palier_fk` )
    REFERENCES `paliers` (`idpalier` )
   )

-- -----------------------------------------------------
-- Table `reponses`
-- -----------------------------------------------------
CREATE  TABLE `reponses` (
  `idreponse` INT NOT NULL AUTO_INCREMENT ,
  `response` VARCHAR(60) NULL ,
  `bonne` TINYINT(1)  NULL ,
  `question_fk` INT NULL ,
  PRIMARY KEY (`idreponse`) ,
  INDEX `question_fk` (`question_fk` ASC) ,
  CONSTRAINT `question_fk`
    FOREIGN KEY (`question_fk` )
    REFERENCES `questions` (`idquestion` )
   )

しかし、問題は、ストアド プロシージャを作成して 4 つの値を挿入し、同時に idpalier (1,2,3) を使用してテーブルの質問に挿入する方法です。

私はこれで試しましたが、それは間違っています

CREATE PROCEDURE sp_reponses_INSERT
(

IN idreponse int(11),
IN reponse varchar(60),
IN bonne tinyint(1),
IN question_fk int(11)
)
BEGIN

INSERT INTO reponses(
    reponse,
    bonne,
    question_fk
)
VALUES
(   
    reponse,
    bonne,
    question_fk

),

(   
    reponse,
    bonne,
    question_fk

),
(   
    reponse,
    bonne,
    question_fk

),
(   
    reponse,
    bonne,
    question_fk

),

;

END 

GO

一方、ストアドプロシージャの代わりにトリガーを作成することを考えていますが、それについてはよくわかりません。テーブルの質問に質問を挿入し、テーブルの回答に4つの回答を挿入する必要があるためです。

何か案は?

4

1 に答える 1

0

ストアド プロシージャは次のように書き換えることができます。

CREATE PROCEDURE sp_reponses_INSERT
(
@reponse varchar(60),
@bonne tinyint(1),
@question_fk int(11)
)
BEGIN

INSERT INTO reponses(
    reponse,
    bonne,
    question_fk
)
VALUES
(   
    @reponse,
    @bonne,
    @question_fk

)
END

変数を渡して、このストアド プロシージャを実行できるようになりました。ただし、この手順は 1 回の実行で成立します。毎回新しい変数セットを渡して 4 回呼び出す必要があります。

これに加えて、応答テーブルにトリガーを追加して、質問テーブルに挿入することができます。

于 2013-02-26T23:53:09.123 に答える