如何执行存储在 MySQL 中的将 ID 从一个表插入到另一个表的过程?
Posted
技术标签:
【中文标题】如何执行存储在 MySQL 中的将 ID 从一个表插入到另一个表的过程?【英文标题】:How to do a procedure stored in MySQL that inserts the ID from one table to another? 【发布时间】:2018-12-14 14:30:36 【问题描述】:如何执行存储在 mysql 中的过程,将 ID 从一个表插入到另一个表?
如何在 mysql 中创建一个存储过程,允许验证是否找到重复数据,如果找到,则能够在两个相关表中注册,否则只在表中插入 id?
如果在数据库中找不到 cc 并将其插入到两个表中,我有以下 SQL 脚本可以工作,但如果 cc 变量在数据库中,则它不起作用谢谢
DROP PROCEDURE IF EXISTS `owners_add`;
DELIMITER $$
CREATE PROCEDURE owners_add(
IN `@name` varchar(35),
IN `@last` varchar(35),
IN `@cc` int(12),
IN `@cell_phone` varchar(15))
BEGIN
DECLARE id_people INT DEFAULT 0;
SET id_people=(SELECT id FROM people WHERE cc=@cc);
IF(id_people IS NULL) THEN
INSERT INTO people(name,last,cc,cell_phone)
VALUES(`@name`,`@last`,`@cc`,`@cell_phone`);
SET @ID = LAST_INSERT_ID();
INSERT INTO owners(id) VALUES(@ID);
ELSE
INSERT INTO owners(id) VALUES(id_people);
END IF;
END$$
【问题讨论】:
如果没有找到@cc,那么它将引发没有找到数据的异常。你必须处理异常 【参考方案1】:您可以设置最后一个插入 id,然后将最后一个插入 id 用作第二个表的值,例如 ..
设置o_maxId=(选择LAST_INSERT_ID());
插入第二个表名(列名,.,.,.,)values(value1.,.,o_maxId);
【讨论】:
以上是关于如何执行存储在 MySQL 中的将 ID 从一个表插入到另一个表的过程?的主要内容,如果未能解决你的问题,请参考以下文章
SQL - 如何从 Mysql 中的另一个表插入附加到 Id 的新行