mysql + tabla con 2 keys
Hola.
Supongo que sera una tonteria, pero siempre he estado usando msaccess y otro tipo de BD y ahora con mysql me encuentro estos errores. He hecho una tabla y necesito que tenga 2 keys, a modo de ID e ID2, es decir que pueda haber varios registros que repitan el mismo ID o ID2. Pero al poner en la tabla ambos campos como primary key, al intentar insertar datos me sale un mensaje de duplicidad de datos (ojo el mensaje me sale en c++ builder). Como podria solucionarlo? GRACIAS |
Cita:
Eso debe suceder por que el valor de Id se repite en Id2, verifica los datos que intentas grabar Saludos |
No me he explicado bien...
Tengo una tabla...: ID_Cliente / Numero_Cuenta_Bancaria Yo quiero que los campos claves sean los 2, porque un cliente puede tener varias cuentas...con lo que si pongo solo ese campo clave no me dejaria. Y que aunque no es probable, clientes distintos pudieran tener la misma cuenta. Quiero datos como estos: 001 / 1234 001 / 1235 002 / 1235 Ahora creo que me explico mejor... ¿Pero como podria hacer esto? |
Nadie sabe como puedo poner esos dos campos como clave?
estoy buscando por internet, pero no me sale nada al respecto o no se bien como buscarlo... Gracias |
tu_tabla es el nombre de tu tabla y cliente_cuenta el nombre que le quieras poner a la clave. // Saludos |
Nada...no funciona!!!
Vamos a ver...me sigo explicando: Tengo la tabla con 3 campos: http://www.geocities.com/antonio_garcia_web/1.bmp Si intento hacer esto:
Me sale el siguiente error en builder c++ 6: http://www.geocities.com/antonio_garcia_web/2.bmp Pero si lo meto desde la BD, sin problemas: http://www.geocities.com/antonio_garcia_web/3.bmp |
nadie puede orientarme un poco??
estoy haciendo la aplicacion...pero ese fallo no lo puedo dejar ahi... |
¿Qué usas para administrar tus bases? Poco puede deducirse de una imagen, pero da la impresión de que tienes tanto a ID_Cliente como a Numero_cuenta como llaves primarias, lo cual sería erróneo porque la unicidad la logras con la combinación de ambas y no cada una por su cuenta.
Haz una consulta
para obtener la definición de la tabla y pega aquí el resultado. // Saludos |
El resultado de la consulta es:
El programa que utilizo es el navicat 8 y tambien phpadmin. Eso es justamente lo que quiero...tener ambos dos campos como claves, para no poder repetir los 2 valores, pero si repetir valores en cada campo. Esto no se como hacerlo!!!! GRACIAS |
Esto no tiene pies ni cabeza :confused:
En tu definición de tabla, ciertamente sobra un índice, puedes omitir el unique y quedarte con el primary. Aun así, no debería fallar. Me parece raro esto: Dices que si haces
obtienes este error: http://www.geocities.com/antonio_garcia_web/2.bmp Pero el mensaje del error menciona: Cita:
http://www.geocities.com/antonio_garcia_web/3.bmp // Saludos |
no no no...quizas es que estuve haciendo pruebas...y puse fotos de una prueba y comente un ejemplo de otra.
En la tabla tengo:
aqui puedes ver todo el proceso -> video Gracias por intentar ayudarme...es algo que necesito que funcione y no se como hacerlo!! |
Hola alt126, por lo que he visto estas intentando ejecutar dos veces tu insert.
como te dice Roman, si pones a los dos campos como primary key, no podras tener un registro que tenga un cliente y cuenta bancaria repetidos y en tu codigo estas haciendo eso, registras el mismo cliente y una misma cuenta para ese cliente. Yo veo una relación de 1 a muchos entre tu tabla clientes y cuentas bancarias, donde el id_cliente de tu tabla cuenta bancaria llegaría a ser una llave foranea (foreing key), ahora también dices que pueden repetirse las cuentas bancarias, si es así, entonces es una relación muchos a muchos, ahí necesitas una tabla intermedia entre tu tabla clientes y cuentas bancarias en dicha tabla id_cliente, cuenta_bancaria, seran tus llaves foraneas. Saluditos |
Lo que decias es completamente cierto...y ya esta solucionado.
No sabia que Cita:
Lo he probado y funciona perfectamente. Sobre la BD, la idea es que un mismo cliente puede tener varias cuentas de banco, es decir que en la misma tabla puede aparecer varias veces el mismo cliente, por lo que no se puede poner solo el cliente como key, tiene que ser la combinacion de cliente y cuenta...eso si que no se repite. No creo necesitar una tabla intermedia, ya que tengo una tabla clientes y luego esta tabla que es la que guarda las cuentas de cada cliente. En access lo tenia asi y funcionaba, pero aqui me daba problemas supongo que por el active=true. Gracias...por ahora todo correcto |
Cita:
// Saludos |
Gracias por la info!!!
|
La franja horaria es GMT +2. Ahora son las 04:45:19. |
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