654380491
hola@carlosdk.com
Login
[miniorange_social_login]

Login with your site account

Lost your password?

Carlos DK Carlos DK
  • Inicio
  • Kit digital
  • Universo Dk
  • Blog
  • Contacto
Back
  • Inicio
  • Kit digital
  • Universo Dk
  • Blog
  • Contacto
  • Home
  • Blog
  • Tutoriales formativos
  • Insertar registro con último id creado en otra tabla

Tutoriales formativos

27 Nov

Insertar registro con último id creado en otra tabla

  • By Carlos Dk
  • In Tutoriales formativos
  • 8 comments

Te doy la bienvenida a VerTutoriales.com, en esta ocasión vamos a hablar de como realizar varias inserciones en varias tablas de manera que vayan relacionadas por el ID de la primera inserción.

Poniendo un caso real, imaginemos el caso de dos tablas, una de Aventuras y otra de Usuarios, estos pueden tener varias aventuras y por ello tenemos también una tabla intermedia llamada UsuarioAventuras. Si añadimos una aventura a la tabla, debemos de realizar la inserción en la segunda tabla que lo relacione con el Usuario que la ha creado, por lo que tendremos que añadir dos consultas, una primera para crear la aventura y otra segunda que añada el registro en UsuarioAventuras con el ID o el código identificador de la tabla de Aventuras.

Crear un gestor para Juegos de Rol
Crear un gestor para Juegos de Rol

Una forma básica, sería añadir el registro en una consulta, realizar la consulta a continuación para traer el máximo ID y por último añadir un nuevo registro con el ID último de la tabla Aventuras junto con el usuario. Eso estaría bien sino tuviéramos en cuenta que otro usuario ha podido añadir justo en el momento otro registro en Aventuras, pudiéndose cruzar (por muy remota que sea la posibilidad) el registro y cambiando los usuarios o asignando una misma aventura a diferentes usuarios.

Para ello utilizaremos una función de MySQL llamada “last_insert_id”.

Como usar Last_insert_id

El uso de last_insert_id es de lo más sencillo y se puede utilizar a continuación de haber realizado la última inserción en la tabla de la que queramos el ID, en nuestro caso la tabla Aventuras. La ventaja de utilizar last_insert_id es que se utiliza dentro de la misma sesión abierta en MySQL, de manera que ese nuevo ID quedará guardado para utilizarse y será el mismo que devuelva la ya mencionada función last_insert_id.

El código de ejemplo de last_insert_id podría ser:

 

[codesyntax lang=”sql”]

INSERT INTO Aventuras (Nombre, Jugadores) VALUES ("La aventura de Reinos de Papel", 3);

INSERT INTO UsuarioAventuras (idUsuario, idAventura) VALUES ($idUsuario, last_insert_id);

[/codesyntax]

 

He de decir, que ambas tablas, tienen un campo llamado id autonumérico y campo clave o primary key. De esta manera, al insertar el primer registro se añadirá un nuevo Id a la tabla aventuras y al insertar el segundo registro, tomará el último id insertado para utilizarlo en la consulta que lo llame.

Así de sencillo! Como siempre.. Si os gusta compartir! y sino ha quedado claro.. podéis realizar cualquier consulta en los comentarios!

 

Tags:Base de datosINSERTmysqlphpRdPrpg
  • Share:
Carlos Dk

You may also like

Crear categorías y configurar menú en WordPress en 4 min.

  • marzo 3, 2019
  • by Carlos Dk
  • in Tutoriales formativos
Crear categoría y menú WordPress Es indispensable en una nueva instalación de WordPress, crear las...
Instalar tema en WordPress en 2 pasos
febrero 23, 2019
Actualizar MySQL 5.1 a 5.6 en CentOS 6.9 con Plesk como panel
octubre 20, 2018
Recorrer todos los objetos de una capa o del DOM completo con JQuery
diciembre 22, 2014

    Comments

  1. Victor
    noviembre 8, 2015

    El otro día tenía la discución con un colega y me decía que era paranóico y que gusto me da saber que alguien pensó lo mismo que yo que s epueden cruzar los datos y como siempre hay un método simple de hacerlo… gracias

    Responder
    • Carlos Dk
      noviembre 10, 2015

      Ya lo pensaron antes que nosotros que se podía dar el caso de cruzar ids por multiusuarios… así que a crear algo concreto 😉

      Responder
  2. Michea
    noviembre 8, 2017

    cuidado con tu linea $idUsuario, vulnerable a injección sql, utilizar pdo para ello, saludos

    Responder
  3. Carlos Dk
    noviembre 8, 2017

    ¿? El ejemplo es para mostrar cómo utilizar last_insert_id y en ningún momento se ve desde dónde se está tomando la variable $idUsuario…

    Os recomiendo ver este tutorial:
    http://vertutoriales.com/error-mysql_real_escape_string-deprecated-como-utilizar-mysqli_real_escape_string/

    Responder
  4. farosla
    febrero 26, 2019

    Pregunta: ¿Se puede hacer este mismo procedimiento pero usando el ultimo id de dos tablas diferentes insertándolos en otra?

    Tabla Paciente(expediente, nombre, sexo, fechanacimiento, iddomicilio, iddiagnostico)
    Tabla DomicilioPaciente(iddomicilio, calle, numero, colonia, localidad, ciudad, estado)
    Tabla Diagnostico(iddiagnostico, diagnostico, tratamiento, observaciones)

    Y podrían ayudarme dándome un ejemplo.

    De antemano gracias

    Responder
    • Carlos Dk
      febrero 26, 2019

      Buenas!

      Claro que sí, pero en vez de utilizarlo directamente en MySQL deberás de primero lanzar una consulta y recuperarlo con PHP (si es que estás utilizando tal lenguaje), por ejemplo:
      LanzaConsulta1(SelectMYSQL);
      $IDUno = mysql_insert_id ([ resource $link_identifier = NULL ] );
      LanzaConsulta2(SelectMYSQL);
      $IDDos = mysql_insert_id ([ resource $link_identifier = NULL ] );
      LanzaConsulta3(SelectMYSQL Con los dos Ids Anteriores)

      Aquí tienes la documentación de mysql_insert_id de PHP:
      http://php.net/manual/es/function.mysql-insert-id.php

      Ya me dices si te aclaré o necesitas mejor ejemplo 🙂

      Responder
      • Fermin Rosado Lavalle
        febrero 27, 2019

        El lenguaje qué utilizo el visual basic estoy aprendiendo a programar empiricamente viendo tutoriales y me basó en ejemplo qué encuentro y en este caso el tuyo me sirvió como ejemplo para usarlo en una tabla. Solo que se me complica al tratar de usarlo ya que manejo dos tablas para ingresar su id en otra. Solo que este ejemplo qué me das no lo entendí.

        Responder
        • Carlos Dk
          febrero 27, 2019

          En resumen como lenguaje natural sería:
          Lanzo la primera consulta
          recojo el último id de esta última consulta
          Lanzo la segunda consulta
          recojo el último id de esta última consulta
          Teniendo los dos IDs ya puedo generar una tercera consulta con esa información que guardé anteriormente en variables

          No sé si la duda es de visual basic (vb) o de lógica de programación.

          Responder

Leave A Reply Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Busca en la web

Recomiendo

Software ERP empresarial

Categorías

  • Miscelanea (129)
  • Tutoriales formativos (622)

Ponte en contacto

+34 654380491

hola@carlosdk.com

Torre del Mar (Málaga)

Enlaces rápidos

  • Universo Dk
  • Contacto
  • Blog

Soy social

  • Twitter
  • Linkedin
  • Youtube

Newsletters

Suscríbete para enterarte de lo último que estoy haciendo. No lo usaré para enviarte SPAM inútil 😉

Esta web la he diseñado con cariño en Andalucía por Carlos Dk