在sp中多次插入

时间:2016-07-22 07:58:06

标签: php mysql stored-procedures insert

我在MYSQL数据库中有这些表:

tBook (idBook,BookName)
tAuthor (idAuthor,AuthorName)
tBookAuthor (FK_Book,FK_Author)

我想在一个存储过程中插入一本新书。在我想要插入表tBookAuthor的相同过程中。

INSERT INTO `tBook`
   (`idBook`, `BookName`)
VALUES
   (23, 'myBookName')

INSERT INTO `tBookAuthor`
   (`FK_Book`, `FK_Author`)
VALUES
   (LAST_INSERT_ID(), 526)

2 个答案:

答案 0 :(得分:0)

问题是我试图修改已经存在的storec过程。 我是在PHPmyAdmin中完成的。

如果要创建新的存储过程,可以这样做:

DELIMITER //
CREATE PROCEDURE new_person(
  first CHAR(35), last CHAR(35), email CHAR(255), tool_id INT)
BEGIN
START TRANSACTION;
INSERT INTO `tBook`
(`idBook`,
`BookName`)
VALUES
(23
'myBookName')

INSERT INTO `tBookAuthor`
(`FK_Book`,
`FK_Author`)
VALUES
(LAST_INSERT_ID(),
526)
COMMIT;
END//
DELIMITER;

如果你想改变phpmyadmin中的存储过程,你可以这样做:

BEGIN
START TRANSACTION;
INSERT INTO `tBook`
(`idBook`,
`BookName`)
VALUES
(23
'myBookName')

INSERT INTO `tBookAuthor`
(`FK_Book`,
`FK_Author`)
VALUES
(LAST_INSERT_ID(),
526)
COMMIT;
END

答案 1 :(得分:-1)

由于你使用PHP,而不是存储过程,我建议做2个插入,因为第二个插入是外键你必须选择作者,得到书的最后一个插入ID并做一个简单的插入那里。 它的麻烦要少得多。

我也很难理解你的dB结构,一本书可以由多位作者写吗?如果是这样,那么我的不好,否则,请保存好帮手表的麻烦,并将作者ID放在书上。