我在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)
答案 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放在书上。