如何执行存储在 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 的新行

MYSQL 从存储过程中的临时表中选择 JOIN 不起作用

MySQL根据ID从一个表中选择另一个表

从存储在 MYSQL 中的 C# 生成唯一 ID

如何从 php 中的 youtube id 创建 mysql 表? [复制]

如何使用会话ID从php mysql中的两个或多个表中获取值