elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  insertar en varias tablas fk y pk
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: insertar en varias tablas fk y pk  (Leído 7,162 veces)
bash

Desconectado Desconectado

Mensajes: 258



Ver Perfil
insertar en varias tablas fk y pk
« en: 1 Diciembre 2016, 03:59 am »

un saludo a tod@s en el foro!!

soy nuevo en esto de base de datos ,y quiero entender algo, le explico tengo varias tablas , normalizadas y como es entendible hay una relaccion donde una de las columna de la tabla es una llave foranea de otra tabla ,entonces me gustaria ver un ejemplo de como puedo hacer un insert en ambas tablas ejemplo...


 tabla cliente ( idcliente, nombre....)
tabla datoscliente ( idcliente fk, direccion,...)

 esa seria mi tabla de prueba quisiera insertar datos en ambas tablas ,como podria hacerlo??? 


En línea

gracias por responder mis dudas
Ocelot1994

Desconectado Desconectado

Mensajes: 40



Ver Perfil
Re: insertar en varias tablas fk y pk
« Respuesta #1 en: 1 Diciembre 2016, 09:38 am »

un saludo a tod@s en el foro!!

soy nuevo en esto de base de datos ,y quiero entender algo, le explico tengo varias tablas , normalizadas y como es entendible hay una relaccion donde una de las columna de la tabla es una llave foranea de otra tabla ,entonces me gustaria ver un ejemplo de como puedo hacer un insert en ambas tablas ejemplo...


 tabla cliente ( idcliente, nombre....)
tabla datoscliente ( idcliente fk, direccion,...)

 esa seria mi tabla de prueba quisiera insertar datos en ambas tablas ,como podria hacerlo???  

Código
  1. INSERT INTO cliente (idCliente,nombre) VALUES(1,juanito)
  2. INSERT INTO datoscliente(idcliente, direccion) VALUES(1, calle falsa)

Esa sería una manera


« Última modificación: 1 Diciembre 2016, 09:40 am por Diego5 » En línea

bash

Desconectado Desconectado

Mensajes: 258



Ver Perfil
Re: insertar en varias tablas fk y pk
« Respuesta #2 en: 1 Diciembre 2016, 22:09 pm »

Gracias, ahora bien segun he visto el ID  de una tabla se puede usar como indice(claro sabiendo que algunos dbms ofrecen algo que funciona con indexer) entonces este idCliente quiero que se autoincremente, hasta ese punto todo bien , pero que tal que quiera poblar varias tablas que tiene una relacion de 1 a muchos siendo IDCliente la foreign key , que se autoincremente , no se si me explico bien , para ver si soy mas claro:

tengo una fila de cliente

IDCliente   | NombreCliente
1             |  pepito

si de una aplicacion esta quiere ingresar varias filas de la tabla de Datoscliente como lo podria hacer , sabiendo que cuando hagamos insert  en clientes el unico dato que insertaremos nosotros sera solo el nombreCliente? 

gracias de antemano.

En línea

gracias por responder mis dudas
Ocelot1994

Desconectado Desconectado

Mensajes: 40



Ver Perfil
Re: insertar en varias tablas fk y pk
« Respuesta #3 en: 2 Diciembre 2016, 16:33 pm »

No se si te entiendo muy bien, es decir si el id es autoincremental tu al hacer el insert solo tienes que añadir el nombredelCliente y ya.
En línea

bash

Desconectado Desconectado

Mensajes: 258



Ver Perfil
Re: insertar en varias tablas fk y pk
« Respuesta #4 en: 2 Diciembre 2016, 18:10 pm »

GRACIAS , Es que quizas me ahogo en un vaso de agua pero , dejame tratar de explicarme mejor.

tengo varias tablas , cliente , datosDeCliente , como dije antes DatosDeCliente tiene un FK con el PK  de cliente , entonces de una aplicacion (este punto no es importante) trato de ingresar  los datosDeCliente como podria hacer el insert si la unica relacion que tengo de Cliente y datosDeCliente es el PK que es autoincremental y no le pongo "la  mano" directamente , tengo una idea podria hacer una select top de la tabla cliente pero quisiera su opinion para ver si hay una mejor manera , que pueda ser estandar porque quiero usar el script sql en un dbms pero quiero que resulte un poco sencillo portarlo a otro.

me explique bien?
En línea

gracias por responder mis dudas
Ocelot1994

Desconectado Desconectado

Mensajes: 40



Ver Perfil
Re: insertar en varias tablas fk y pk
« Respuesta #5 en: 2 Diciembre 2016, 19:11 pm »

A ver que yo sepa dentro de un script sql a la hora de hacer los insert de una tabla con un valor auto incremental como clave foranea lo que podrías hacer es meter ese valor a traves de una funcion sql o mediante un trigger,ahora bien no creo que sea muy difícil pero la manera de hacerlo se me escapa, tendrías que investigar algo.

Un saludo
En línea

bash

Desconectado Desconectado

Mensajes: 258



Ver Perfil
Re: insertar en varias tablas fk y pk
« Respuesta #6 en: 3 Diciembre 2016, 14:01 pm »

Gracias vere que resulvo y luego comento ,

ya esto lo habian dicho , la cosa es que como se autoincrementan cada vez que yo cree un cliente
el ID Aumentara entonces por default la proxima inserccion en datosCliente aumentara. creo que hay quedo. gracias a todos

edit:

 
Código
  1.  
  2. INSERT INTO cliente (nombre) VALUES(juanito)  --si el id value - 1
  3. INSERT INTO datoscliente(direccion) VALUES( calle falsa) ---aqui tambien vale 1
  4.  




Edit


buenas a todos de nuevo decidi seguir con mi aprendisaje pero la verdad no entiendo muy eso  de las primary key y las foreign key , he creado unas tablsas me gustaria que las vierna para recibir su consejo, se que estoy violando un par de reglas al normalizar pero creo que es por eso mismo. dejare el codigo sql (usando derby ) pero la logica es lo que me importa realmente quiero entender como podria evitar crear varios campos o como hacer los insert en la tabla de ContratoServicio  esta sirve para conectar dos tablas como son cliente , servicio y quizasd modo de pago. bueno mas abajo dejo el codigo espero y agradezco de su ayuda o consejo :D



Código
  1. CREATE TABLE usuarios(idUsuario     VARCHAR(32) NOT NULL CONSTRAINT UID_SC UNIQUE,
  2.                      nombreUsuario VARCHAR(45) NOT NULL ,
  3.                      claveAcceso   VARCHAR(128) NOT NULL,
  4.                      categoria     VARCHAR(16) NOT NULL , PRIMARY KEY(idUsuario)
  5.                      activo        CHAR NOT NULL CONSTRAINT ch_check CHECK(activo =='a' OR activo == 'n'));
  6.  
  7.  
  8.  
  9.  
  10. --Tabla Servicio
  11. CREATE TABLE Servicio (IDServicio  INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY CONSTRAINT IDServicio_PK PRIMARY KEY,
  12.                       ClaveBusqueda VARCHAR(16) NOT NULL,
  13.                       DescripcionServicio VARCHAR(128) NOT NULL,
  14.                       precioBase DECIMAL(9,3) NOT NULL CONSTRAINT SPRICE_C CHECK(precioBase > 20),
  15.                       proveedorServicio VARCHAR(32) NOT NULL);
  16.  
  17. CREATE TABLE ModoPagoDigital (IDModoPago  INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY CONSTRAINT IDServicio_PK PRIMARY KEY,
  18.                              IDEspecifico VARCHAR NOT NULL CONSTRAINT modo_c UNIQUE,
  19.                              NombreDelSuplidorModoPago);
  20.  
  21.  
  22.  
  23. CREATE TABLE ContratoServicio (ClaveBusquedaServicio VARCHAR(16) NOT NULL, idServicio INTEGER NOT NULL, IDUsuario VARCHAR(32));
  24.  
  25.  
  26. INSERT INTO usuarios (idUsuario, nombreUsuario, claveAcceso, categoria, activo) VALUES('admin'      , 'admin'     , '123456@a','admin'   , 'a');
  27. INSERT INTO usuarios (idUsuario, nombreUsuario, claveAcceso, categoria, activo) VALUES('empleado'   , 'empleado'  , '123456@a','empleado','a' );
  28. INSERT INTO usuarios (idUsuario, nombreUsuario, claveAcceso, categoria, activo) VALUES('supervisor' , 'supervisor', '123456@a','empleado','a' );
  29. INSERT INTO usuarios (idUsuario, nombreUsuario, claveAcceso, categoria, activo) VALUES('cliente'    , 'cliente'   , '123456@a','cliente' ,'a');
  30. INSERT INTO usuarios (idUsuario, nombreUsuario, claveAcceso, categoria, activo) VALUES('prueba'     , 'prueba'    , '111111'  ,'cliente' ,'n');
  31.  
  32.  
  33. INSERT INTO Servicio(ClaveBusqueda, DescripcionServicio, precioBase, proveedorServicio) VALUES('Edepagos', 'Este Servicio de electricidad', 32, 'EDESDOM');
  34. INSERT INTO Servicio(ClaveBusqueda, DescripcionServicio, precioBase, proveedorServicio) VALUES('FerromDiario', 'Este Servicio deja a los cliente aprender a distancia tecnicas de programacion', 32, 'FERROMDOM');
  35. INSERT INTO Servicio(ClaveBusqueda, DescripcionServicio, precioBase, proveedorServicio) VALUES('Aguas dominiciana', 'Este Servicio de agua', 32, 'gob. Base`');
  36. INSERT INTO Servicio(ClaveBusqueda, DescripcionServicio, precioBase, proveedorServicio) VALUES('net place', 'Este Servicio de Internet local', 32, 'internet');
  37. INSERT INTO Servicio(ClaveBusqueda, DescripcionServicio, precioBase, proveedorServicio) VALUES('telefonos Rapido', 'cuentas de telefono', 32, 'EDESDOM');
  38.  


« Última modificación: 8 Diciembre 2016, 04:56 am por bash » En línea

gracias por responder mis dudas
crisoof

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Re: insertar en varias tablas fk y pk
« Respuesta #7 en: 29 Diciembre 2016, 13:40 pm »

No entiendo bien tu duda, creo que quieres saber sobre primmary y foreign key?, bueno si es asi te doy este ejemplo



el apellido paterno de tu padre, es la primmary key para el

jose Perez

tu "heredas" el apellido paterno de tu padre por ende para ti ese apellido paterno es una Foreign key, es una llave primaria de otra tabla, en este caso tu padre, ese apellido paterno también puede ser tu primmary key
tu serias
Juan Perez siendo Perez tu llave primmary y foreign key de tu padre

ahora lo que hablas de los tipo IdENTITY corresponde  un campo autoincremental, siempre va a ir aumentando, por ende no es necesario insertarlo, tal como lo tienes en tu ejemplo, tambien pudiste usar una secuenc para usar el autoincremental, espero te sirva para entender un poco mejor las primmary y foreign key
Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Alguien sabe insertar tablas en un post?
Sugerencias y dudas sobre el Foro
soplo 8 3,347 Último mensaje 5 Julio 2004, 10:13 am
por Firos
Insertar tablas de BD en mi web. (Estancado)
PHP
WiseHidden 2 2,557 Último mensaje 23 Diciembre 2012, 19:33 pm
por WiseHidden
insertar en 2 tablas distintas
PHP
basickdagger 5 3,286 Último mensaje 30 Mayo 2014, 22:22 pm
por basickdagger
insertar en 1 sql solo varios datos relacionado con varias tablas
Bases de Datos
tecasoft 4 4,197 Último mensaje 22 Octubre 2015, 20:08 pm
por 0roch1
Como usar el insert Into en varias tablas con una condicion
.NET (C#, VB.NET, ASP)
_CrisiS_ 0 2,524 Último mensaje 1 Abril 2018, 16:56 pm
por _CrisiS_
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines