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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-06-2010
yossi yossi is offline
Miembro
 
Registrado: abr 2010
Posts: 59
Poder: 15
yossi Va por buen camino
modificar registros

hola de nuevo, me podrian ayudar en esta duda que no tengo ni la menor idea de como solucionarla.

quisiera que en mi aplicacion el usuario pudiera modificar una clave primaria de una tabla y que a su vez es foranea en otras, pues quisiera que se propagara ese cambio, que cuando modifique la primaria se modifiquen todas las foraneas que coincidan con esa en las demas tablas

se podra?
Responder Con Cita
  #2  
Antiguo 10-06-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.954
Poder: 27
delphi.com.ar Va camino a la fama
Estas hablando de "Cascade Update", no lo soportan todos los motores. No es una práctica recomendable, lo recomendable es que el ID de la tabla sea un número autoincremental que identifique el registro, pero que no sea algo visible hacia el usuario final. Y en el caso de requerir una clave única, crear un campo con tal fin en la tabla Master, donde se verá reflejado el cambio en todas las consultas tablas Detail por la propia relación con Master.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 10-06-2010
yossi yossi is offline
Miembro
 
Registrado: abr 2010
Posts: 59
Poder: 15
yossi Va por buen camino
hola, gracias por el consejo pero obligatoriamente tengo que usar el "update on cascade" y no se como implementarlo, trabajo con mysql y con innoDB que se que lo soporta
Responder Con Cita
  #4  
Antiguo 10-06-2010
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Si lo soporta entonces debes poder hacer algo como:

Código SQL [-]
/* Está sintaxis es para Firebird, solo debes investigar la sintaxis para MySQL */
alter table Tabla 
add constraint ClaveForanea foreign key (Campo) 
references TablaReferenciada on (CampoForaneo) 
on update cascade;


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter

Última edición por delphi.com.ar fecha: 11-06-2010 a las 15:39:15. Razón: Modifique el SQL por una cuestión de lectura.
Responder Con Cita
  #5  
Antiguo 10-06-2010
yossi yossi is offline
Miembro
 
Registrado: abr 2010
Posts: 59
Poder: 15
yossi Va por buen camino
segun el manual de mysql las tablas InnoDB si aceptan claves foraneas y el ON CASCADE

lo hice con esta sentencia

Código SQL [-]
ALTER TABLE registros
ADD CONSTRAINT fk_personas_id 
FOREIGN KEY(personas_id)
REFERENCES personas (id)
ON DELETE NO ACTION
ON UPDATE CASCADE

pero solo me deja aplicarlo a una sola tabla, cuando trato de hacerlo con otra me salta el error #1005 - Can't create table 'mydb.#sql-898_26a' (errno: 121)

segun tengo entendido las tablas myISAM no aceptan claves foraneas pero si cambio el motro de la tabla a myisam no me da error pero tampoco actualiza en cascada

que hago? necesito que la clave primaria de personas sea foranea en 6 tablas y que estas se actualicen en cascada
Responder Con Cita
  #6  
Antiguo 10-06-2010
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Verifica que no estás tratando de usar el mismo nombre de clave foranea para todas las tablas, esto es, que no todas se llamen fk_personas_id.


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #7  
Antiguo 11-06-2010
yossi yossi is offline
Miembro
 
Registrado: abr 2010
Posts: 59
Poder: 15
yossi Va por buen camino
gracias maeyanes eso era.
Responder Con Cita
Respuesta



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
modificar registros query Buelos Firebird e Interbase 8 02-03-2008 01:52:00
Modificar registros que son resultados de una busqueda (VIH)Lestat Conexión con bases de datos 1 02-07-2005 22:44:14
como modificar los registros de un query? URBANO SQL 2 15-06-2004 11:15:44
modificar registros mediante cgi-webbroker [[JONAS]] Internet 1 19-05-2004 19:40:24
Modificar registros desde Visual Basic 6.0 en Interbase 6.0 ramygo Conexión con bases de datos 5 30-05-2003 17:51:28


La franja horaria es GMT +2. Ahora son las 01:48:55.


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