Integridad Referencial
hola a todos,
Necesito que alguien me explique si existe alguna variante de que Interbase me chequee el mantenimiento de la integridad referencial. Me explico mejor: Tengo creada una Base de datos maestro detalles, la cuestión es que yo tengo que controlar si un usuario va a eliminar o modificar el campo llave del maestro de forma tal que no deje ningún detalle colgado (sin maestro). ¿Es posible que el propio SGBD me controle esto? Yo estoy utilizando Delphi 7 e Interbase 6.5 Gracias |
Lee sobre la clausula cascade.
Salu2. |
Gracias Ya Resolvi Y Me Funciona De Maravilla
|
Me explico como lo hice para que le pueda servir a otros, porque de eso se tratan los foros:
Bien, yo estoy utilizándo el (IB Expert) un software muy bueno y que tiene una versión libre con pocas limitaciones. Tengo dos tablas una Maestra y una detalles. Creo una llave primaria (primary key) en maestra, y voy a la tabla detalles y en las restrinciones creo una llave foránea (foreing key) sobre el campo llave y que hace referencia al campo llave de la tabla maestra, luego aparecen las opciones de como responder ante una modificación o una eliminación del campo llave de la tabla maestra, particularmente yo escogí para modificación (cascade) donde el SGBD me modifica automáticamente el campo llave de la tabla esclava manteniendo la intedridad, y en eliminar escogí (no action) que evita la posibilidad de que el usuario elimine un record de la tabla maestra si tiene dependencias en la tabla esclava. en IB Expert todo esto es visual y muy fácil y además te va poniendo el código SQL que se va generando. CODIGO SQL: Para crear la llave primaria en la tabla maestra: ALTER TABLE MAESTRA ADD CONSTRAINT PK_MAESTRA PRIMARY KEY (CAMPO LLAVE); Para crear el índice foráneo en la tabla esclava: ALTER TABLE ESCLAVA ADD CONSTRAINT FK_ESCLAVA_1 FOREIGN KEY (LLAVE DE ESCLAVA) REFERENCES MAESTRA (LLAVE DE MAESTRA) ON UPDATE CASCADE; Ya lo he probado y funciona de maravila. Gracias a todos y a los principiantes como yó les recomiendo que utilicen el IB Expert que nos permite hacerlo todo visualmente e ir aprendiendo SQL. |
Deberías añadir ... ON DELETE CASCADE ;)
|
Lepe, gracias pero si agrego lo que me sugieres me himagino que se eliminarían los records de la tabla esclava si se borra su maestro y no es lo que pretendo, con solo omitir ON DELETE el SGBD para mantener la integridad no permite borrar un maestro que tenga esclavos y es precisamente lo que quiero.
Gracias de todos modos |
Si alguien necesita el instalador del IB Expert se lo puedo enviar a su correo, la versión que tengo es libre.
|
La franja horaria es GMT +2. Ahora son las 18:43:20. |
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