我有两张桌子
书桌
- 身份证(PK)
- 标题
- 作者
- 类型
- 国际标准书号
- 价格
- 出版商
- 年
书奖表
- ID (FK) -- 引用 Books.ID
- 奖项名称
- 年
bookAwards 的 ID 是书籍表中 ID 的外键。
如何将 bookAwards 表同时插入 bookAwards 表?
当我试图插入书籍表时,它会给出外键导致的错误?
我想将值插入到书籍表中,然后在 bookAwards 中插入带有年份的奖项名称?
任何帮助都感激不尽。
我有两张桌子
书桌
书奖表
bookAwards 的 ID 是书籍表中 ID 的外键。
如何将 bookAwards 表同时插入 bookAwards 表?
当我试图插入书籍表时,它会给出外键导致的错误?
我想将值插入到书籍表中,然后在 bookAwards 中插入带有年份的奖项名称?
任何帮助都感激不尽。
您可以使用STORED PROCEDURE
它,因此您只会从应用程序级别调用一次。例子,
DELIMITER $$
CREATE PROCEDURE InsertBook
(
IN _Title INT,
IN _AwardName VARCHAR(35),
IN _Year INT
)
BEGIN
INSERT INTO Books (Title)
VALUES(_Title);
-- since the ID is set as AUTO_INCREMENT
-- there are two ways to do how you can get the ID
-- from the Books Table and insert it
-- on BookAwards
-- FIRST WAY
-- by using LAST_INSERT_ID()
SET @last_ID = LAST_INSERT_ID();
-- SECOND WAY
-- by using MAX()
-- SET @last_ID = (SELECT MAX(ID) FROM Books);
INSERT INTO BookAwards(ID, AwardName, Year)
VALUES (@last_ID, _AwardName, _Year);
END $$
DELIMITER ;
在应用程序级别或您要调用此过程的任何来源上,
CALL InsertBook('Lost Art', 'Best in Churva', 2013);
出于安全目的,您仍然可以对过程进行参数化,例如
CALL InsertBook(?, ?, ?);