我在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)发布于 2016-07-22 17:57:16
问题是我试图修改一个已经存在的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发布于 2016-07-22 16:39:56
由于您使用的是PHP,而不是存储过程,因此我建议执行两次插入,因为第二次插入是外键,您必须选择作者,获取图书的最后一次插入ID,然后在那里执行一次简单的插入。这样麻烦就少多了。
我在理解您的dB结构时也遇到了一些问题,一本书可以由多个作者撰写吗?如果是这样,我的错,否则,省去了帮助表的麻烦,只需将作者id放在书上即可。
https://stackoverflow.com/questions/38521170
复制相似问题