я знаю, что это будет очень поздно, но так как мне потребовались целые годы, чтобы найти реальное решение, я мог бы также поделиться им. Я работал над примером, который ниже.
созданы таблицы:
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));
- РАЗДЕЛИТЕЛЬ
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
в качестве внешнего ключа в обеих таблицах.
Извините за лишнюю формулировку. Все остальные парни ожидают, что вы автоматически узнаете, как это сделать. Надеюсь, это поможет