は、私は、これは遅れて本当に来ている知っているが、それは本当の解決策を見つけるために私の年齢を取ったので、私も共有することがあります。私は下の例で取り組んだ。作成した
テーブルは以下のとおりです。
CREATE TABLE BOOK(
B_ID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(B_ID),
TITLE VARCHAR(100),
DESCRIPTION VARCHAR(30),
PRICE DOUBLE);
CREATE TABLE BOOK_COMMENT(
PRIMARY KEY(B_C_ID),
B_C_ID INT NOT NULL AUTO_INCREMENT,
REMARK VARCHAR(120),
B_ID INT,
FOREIGN KEY(B_ID) REFERENCES BOOK(B_ID));
CREATE TABLE AUTHOR(
A_ID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(A_ID),
A_NAME CHAR(15),
B_ID INT,
FOREIGN KEY(B_ID) REFERENCES BOOK(B_ID));
- DELIMITER
CREATE PROCEDURE BOOK_IMPORTANT(_PRICE DOUBLE, _B_ID INT, A_NAME CHAR(15), _BD_ID INT)
BEGIN
INSERT INTO BOOK(PRICE)
VALUES(_PRICE);
SET _B_ID=LAST_INSERT_ID();
INSERT INTO BOOK_COMMENT(B_ID)
VALUES(_B_ID);
SET _BD_ID=LAST_INSERT_ID();
INSERT INTO AUTHOR(A_NAME,B_ID)
VALUES(A_NAME,_BD_ID);
END
その後、値を挿入するには、次を使用します。
CALL BOOK_IMPORTANT('0.79',LAST_INSERT_ID(),'',LAST_INSERT_ID());
LAST_INSERT_ID()
は、テーブルの最後の自動インクリメントを取り、子テーブルの参照列に挿入します。
プロシージャのパラメータ_B_ID
と_BD_ID
は、B_ID
が両方のテーブルの外部キーとして必要なので、B_ID
を表します。
ご迷惑をおかけして申し訳ありません。他のすべての人は、あなたが自動的にそれを行う方法を知っていることを期待しています。欲しいのですが。
インラインサブクエリを使用してみてください – bobobobo
これは答えですか?解決策はどこですか? – Serge
これはできませんか? – Samra