Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-05-2020
wilcg wilcg is offline
Miembro
 
Registrado: abr 2014
Posts: 107
Poder: 11
wilcg Va por buen camino
función LAST_INSERT_ID() en MySQL

Amigos un saludo,
Es un problema común, lo que quiero es vincular registros mediante un ID, He estado revisando por la red sobre como capturar el ID de un campo AUTO_INCREMENT en Mysql, y me he topado con estas funciones SQL mysql_insert_id() y LAST_INSERT_ID().
la información que he encontrado no es muy entendible, mi consulta va a los expertos del club para sacarme de dudas.

lo que quiero es grabar el ID correcto de un campo de una tabla maestra, en los demás campos de las tablas secundarias.
En una suposición en el ejemplo de abajo, En un ambiente de uso de múltiples usuarios conectados, al mismo tiempo realizando INSERT en la tabla. Mi pregunta va

¿capturará el ID del registro indicado?
¿podría capturar el ID del registro de otro usuario que en ese mismo instante lo esta dando guardar?
son dudas de novato, pero son importantes corregirlas para el funcionamiento correcto de la aplicación.

esta es la tabla
Código SQL [-]
CREATE TABLE `articulos` (
  `id_articulo` INTEGER(11) NOT NULL AUTO_INCREMENT,
  `nombre` VARCHAR(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `marca` VARCHAR(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
  PRIMARY KEY USING BTREE (`id_articulo`)
) ENGINE=InnoDB
AUTO_INCREMENT=1 ROW_FORMAT=DYNAMIC CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci'
;
Código:
Utilizando la funcion de mysql LAST_INSERT_ID(), obtengo el ID del registro insertado y luego lo registro en las siguientes tablas.
Código Delphi [-]
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO articulo ( ');
Query1.Query1.SQL.Add('nombre, marca ) VALUES ( :nombre, :marca ');
Query1.ParamByName('nombre').AsString := txtNombre.Text;
Query1.ParamByName('marca').AsString   := txtMarca.Text;
Query1.ExecSQL;
Código Delphi [-]
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO precio1 ( ');
Query1.Query1.SQL.Add('id_articulo, precio ) VALUES ( LAST_INSERT_ID(), recio');
Query1.ParamByName('precio').AsCurrency := txtPrecio1.Value;
Query1.ExecSQL;

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO precio2 ( ');
Query1.Query1.SQL.Add('id_articulo, precio ) VALUES ( LAST_INSERT_ID(), recio');
Query1.ParamByName('precio').AsCurrency := txtPrecio2.Value;
Query1.ExecSQL;
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Convertir función MySql a procedimiento Firebird solilopi MySQL 5 04-09-2017 14:42:02
insertando datos en una tabla en mysql 5.7.11 con la función AES_ENCRYPT chino150 MySQL 18 01-03-2017 00:03:41
La funcion last_insert_id de my sql devuelve siempre cero frandigo77 MySQL 4 24-09-2014 17:24:51
last_insert_id windows linux. ppb MySQL 0 13-11-2013 18:06:40
last_insert_id en FireBird Kreyser Firebird e Interbase 2 19-05-2005 16:55:35


La franja horaria es GMT +2. Ahora son las 19:02:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi