mysql - SQL 存储过程 1 个插入需要 2 个插入语句和 1 个选择

标签 mysql sql-server stored-procedures

我有一个网站,其数据库在 MySQL Community Server (GPL) 版本 5.5.37 上运行

我想编写一个存储过程来在表 1 中插入图像,然后从上一篇文章中选择 id 将该 id 插入到表 2 中。

我开始用谷歌搜索,结果是这样的:

<小时/>
CREATE PROCEDURE InsertNewMedia( 
    IN insertLocatie varchar(255),
    IN insertNaam varchar(150), 
    IN insertOmschrijving longtext, 
    IN insertCategorieID  int
)

BEGIN

INSERT INTO MediaDB (idMediaDB, Locatie, Naam, Omschrijving) VALUES (NULL, insertLocatie, insertNaam, insertOmschrijving);

SELECT MAX(idMediaDB) AS Nieuwste FROM MediaDB;

INSERT INTO MediaLink (idMediaLink, OverMijShoots_idOverMijShoots, MediaDB_idMediaDB) VALUES (NULL, insertCategorieID, Nieuwste);

END
<小时/>

我知道这是一个错误的代码,但我找不到适合我需要的东西。

有人可以帮助我吗?

最佳答案

我认为您正在寻找LAST_INSERT_ID():

delimiter //
CREATE PROCEDURE InsertNewMedia(
    IN insertLocatie varchar(255),
    IN insertNaam varchar(150),
    IN insertOmschrijving longtext,
    IN insertCategorieID int
)

BEGIN
    INSERT INTO MediaDB(idMediaDB, Locatie, Naam, Omschrijving)
        VALUES (NULL, insertLocatie, insertNaam, insertOmschrijving);

     INSERT INTO MediaLink (idMediaLink, OverMijShoots_idOverMijShoots, MediaDB_idMediaDB)
        VALUES (NULL, insertCategorieID, LAST_INSERT_ID());

END//
delimiter ;

关于mysql - SQL 存储过程 1 个插入需要 2 个插入语句和 1 个选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26702191/

相关文章:

sql-server - 选择不同并按顺序排序

MySQL存储过程——插入多行

postgresql - 将存储过程错误记录到表PostgreSQL

mysql - 对于包含超过 1 件商品的订单,最多只能选择 2 行

mysql - 我如何像格式化程序一样构造 SQL 代码,以使其通过 SQL 命令更好地读取到数据库

sql - 如何传递变量内字符串的参数值?

mysql - 如何在 MySQL 存储过程中通过 ID 获取行?

mysql - 使用变量作为名称删除外键

PHP - MySQL 查询不能完全工作

sql-server - 在不同的数据库上下文下执行存储过程?