![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Update de campos clave, tablas relacionadas
Tengo dos tablas, la primera con campo clave CA1, la segunda con un campo CA2 que enlace con la primera tabla con una restricción de integridad referencial.
Como puedo modificar un valor en el campo CA1 mientras hay entradas en la segunda tabla con el mismo valor que el registro de la primera tabla? Pensé en crear una nueva entrada en la primera tabla con clave el nuevo valor que debe tener. Despues, modificar las entradas de la segunda tabla para "apuntar" al registro nuevo, para a continuación eliminar el registro inicial de la primera tabla. Problema clasico de actualización de la clave de una tabla maestra !!!! Como puedo hacer esto de forma más elegante, quizas desactivando la restricción de integridad referencial temporalmente, o usando SET CONSTRAINT XXX DEFERRED, o que ?? Trabajamos con Oracle, PL/SQL, V9.2.0.4. |
#2
|
|||
|
|||
No he trabajado nunca con Oracle, pero me imagino que tendrá actualizaciones en cascada por lo que, cambiando el código en la tabla maestra, se cambiará automáticamente en la tabla detalle (si, como dices, has definido una relación de integridad entre ambas)
|
#3
|
|||
|
|||
Para mas detalle, si es como en Interbase, al declarar la Foreign Key, puedes decirle como reaccionar ante determinados enventos, ej.
Código:
ALTER TABLE ARTICULO ADD CONSTRAINT FK_ARTICULO_FAMILIA FOREIGN KEY (FAMILIA) REFERENCES FAMILIA (CODIGO) ON UPDATE CASCADE ON DELETE NO ACTION; Un saludo.
__________________
J. Adolfo Núñez |
#4
|
|||
|
|||
As far as I know, Oracle has no ON UPDATE CASCADE clause, hence my question -- how to proceed when there is no such clause.
|
#5
|
|||
|
|||
Oracle has no ON UPDATE CASCADE clause, as far as I know -- hence my question: how to proceed when there is no such clause.
|
#6
|
|||
|
|||
El codigo que yo he puesto es para IB, quizas el formato para Oracle sea distinto. En la ayuda de la creacion de FK debe aparecer algo. Si no lo permitiera, podrias deshabilitar la regla de integridad, realizar los cambios en las dos tablas y volver a habilitar la regla de integridad. Digo deshabilitar y habilitar, no eliminar y volver a crear.
Esto se que se puede hacer en Oracle, porque lo hice en unas practcas de la carrera pero no recuerdo como.
__________________
J. Adolfo Núñez |
![]() |
|
|
![]() |
|