Autor
|
Tema: insertar en varias tablas fk y pk (Leído 7,186 veces)
|
bash
Desconectado
Mensajes: 258
|
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
Mensajes: 40
|
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???
INSERT INTO cliente (idCliente,nombre) VALUES(1,juanito) 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
Mensajes: 258
|
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
Mensajes: 40
|
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
Mensajes: 258
|
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
Mensajes: 40
|
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
Mensajes: 258
|
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: INSERT INTO cliente (nombre) VALUES(juanito) --si el id value - 1 INSERT INTO datoscliente(direccion) VALUES( calle falsa) ---aqui tambien vale 1
Editbuenas 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 CREATE TABLE usuarios(idUsuario VARCHAR(32) NOT NULL CONSTRAINT UID_SC UNIQUE, nombreUsuario VARCHAR(45) NOT NULL , claveAcceso VARCHAR(128) NOT NULL, categoria VARCHAR(16) NOT NULL , PRIMARY KEY(idUsuario) activo CHAR NOT NULL CONSTRAINT ch_check CHECK(activo =='a' OR activo == 'n')); --Tabla Servicio CREATE TABLE Servicio (IDServicio INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY CONSTRAINT IDServicio_PK PRIMARY KEY, ClaveBusqueda VARCHAR(16) NOT NULL, DescripcionServicio VARCHAR(128) NOT NULL, precioBase DECIMAL(9,3) NOT NULL CONSTRAINT SPRICE_C CHECK(precioBase > 20), proveedorServicio VARCHAR(32) NOT NULL); CREATE TABLE ModoPagoDigital (IDModoPago INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY CONSTRAINT IDServicio_PK PRIMARY KEY, IDEspecifico VARCHAR NOT NULL CONSTRAINT modo_c UNIQUE, NombreDelSuplidorModoPago); CREATE TABLE ContratoServicio (ClaveBusquedaServicio VARCHAR(16) NOT NULL, idServicio INTEGER NOT NULL, IDUsuario VARCHAR(32)); INSERT INTO usuarios (idUsuario, nombreUsuario, claveAcceso, categoria, activo) VALUES('admin' , 'admin' , '123456@a','admin' , 'a'); INSERT INTO usuarios (idUsuario, nombreUsuario, claveAcceso, categoria, activo) VALUES('empleado' , 'empleado' , '123456@a','empleado','a' ); INSERT INTO usuarios (idUsuario, nombreUsuario, claveAcceso, categoria, activo) VALUES('supervisor' , 'supervisor', '123456@a','empleado','a' ); INSERT INTO usuarios (idUsuario, nombreUsuario, claveAcceso, categoria, activo) VALUES('cliente' , 'cliente' , '123456@a','cliente' ,'a'); INSERT INTO usuarios (idUsuario, nombreUsuario, claveAcceso, categoria, activo) VALUES('prueba' , 'prueba' , '111111' ,'cliente' ,'n'); INSERT INTO Servicio(ClaveBusqueda, DescripcionServicio, precioBase, proveedorServicio) VALUES('Edepagos', 'Este Servicio de electricidad', 32, 'EDESDOM'); INSERT INTO Servicio(ClaveBusqueda, DescripcionServicio, precioBase, proveedorServicio) VALUES('FerromDiario', 'Este Servicio deja a los cliente aprender a distancia tecnicas de programacion', 32, 'FERROMDOM'); INSERT INTO Servicio(ClaveBusqueda, DescripcionServicio, precioBase, proveedorServicio) VALUES('Aguas dominiciana', 'Este Servicio de agua', 32, 'gob. Base`'); INSERT INTO Servicio(ClaveBusqueda, DescripcionServicio, precioBase, proveedorServicio) VALUES('net place', 'Este Servicio de Internet local', 32, 'internet'); INSERT INTO Servicio(ClaveBusqueda, DescripcionServicio, precioBase, proveedorServicio) VALUES('telefonos Rapido', 'cuentas de telefono', 32, 'EDESDOM');
|
|
« Última modificación: 8 Diciembre 2016, 04:56 am por bash »
|
En línea
|
gracias por responder mis dudas
|
|
|
crisoof
Desconectado
Mensajes: 48
|
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
|
|
|
|
|
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,355
|
5 Julio 2004, 10:13 am
por Firos
|
|
|
Insertar tablas de BD en mi web. (Estancado)
PHP
|
WiseHidden
|
2
|
2,565
|
23 Diciembre 2012, 19:33 pm
por WiseHidden
|
|
|
insertar en 2 tablas distintas
PHP
|
basickdagger
|
5
|
3,297
|
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,218
|
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,541
|
1 Abril 2018, 16:56 pm
por _CrisiS_
|
|