首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sp中的多个插入

问sp中的多个插入
EN

Stack Overflow用户
提问于 2016-07-22 15:58:06
回答 2查看 84关注 0票数 1

我在MYSQL数据库中有以下表:

代码语言:javascript
复制
tBook (idBook,BookName)
tAuthor (idAuthor,AuthorName)
tBookAuthor (FK_Book,FK_Author)

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

代码语言:javascript
复制
INSERT INTO `tBook`
   (`idBook`, `BookName`)
VALUES
   (23, 'myBookName')

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

回答 2

Stack Overflow用户

发布于 2016-07-22 17:57:16

问题是我试图修改一个已经存在的storec过程。这是我在PHPmyAdmin中做的。

如果你想创建一个新的存储过程,你可以这样做:

代码语言:javascript
复制
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中修改一个存储过程,你可以这样做:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2016-07-22 16:39:56

由于您使用的是PHP,而不是存储过程,因此我建议执行两次插入,因为第二次插入是外键,您必须选择作者,获取图书的最后一次插入ID,然后在那里执行一次简单的插入。这样麻烦就少多了。

我在理解您的dB结构时也遇到了一些问题,一本书可以由多个作者撰写吗?如果是这样,我的错,否则,省去了帮助表的麻烦,只需将作者id放在书上即可。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38521170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档