Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/04/2006, 21:16
-thor-
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Cita:
Originalmente publicado por -thor-
hola,
Es necesario,que relacione la tabla password,con la tabla productos,para controlar el acceso de usuario,ya que la consulta,para comprobar si un usuario tiene acceso o no al sistema,la hago directamente a la tabla password,en donde compruebo el rut y password de dicho usuario.


Realmente no entiendo tu pregunta.
Disculpa,fui poco claro,en esta pregunta quize referirme a lo de integridad referencial,por eso preguntaba si era necesario,la relacion de la tabla password a la tabla productos,porque,si yo borraba un usuario,la clave foranea que pertenece al rut del usuario,quedaria en blanco y me daria un error.



Cita:
A lo que tu te refieres es a la integridad referencial.
Para solucionar el tema de que al eliminar una tupla cuya llave primaria es llave foranea de otra tupla, no queden inconsistencias, se utiliza la clausula

ON DELETE CASCADE.

La sintaxis es mas o menos esta

CONSTRAINT nombre REFERENCES tablaexterna (campoexterno1)
ON UPDATE CASCADE

Esto queire decir que cuando defines una llave foranea en una tabla mediante SQL, y utilizas la rectriccion CASCADE, cuando se elimine la tupla con la llave a la cual nuestra tabla hace referencia, entonces se eliminara tambien esta tupla.
Este es mi codigo sql de la tabla producto y de las claves foranea,
que cambios debo realizarle,para lograr borrar en cascade.

Código:
/*==============================================================*/
/* Table: producto                                              */
/*==============================================================*/
create table producto
(
   prd_cod_pro                    INT(4)                         not null,
   cat_cod_id                     INT(4),
   pass_rut_persona               CHAR(10),
   mar_cod_marca                  INT(4),
   prd_fecha_creacion             DATE,
   prd_hora_creacion              TIME,
   prd_fecha_lanzamiento          DATE,
   prd_nombre_producto            CHAR(20),
   prd_precio                     INT(6),
   prd_descripcion                CHAR(80),
   prd_producto_existente         INT(4),
   prd_unidad_caja                INT(4),
   prd_suspendido                 CHAR(2),
   prd_oferta                     CHAR(2),
   primary key (prd_cod_pro)
)type = InnoDB charset=latin1 collate=latin1_spanish_ci;




alter table password add constraint FK_USUARIOS foreign key (pass_rut_persona)
      references usuarios (per_rut_persona) on delete restrict on update restrict;

alter table producto add constraint FK_CATEGORIA foreign key (cat_cod_id)
      references categoria (cat_cod_id) on delete restrict on update restrict;

alter table producto add constraint FK_MARCA foreign key (mar_cod_marca)
      references marca (mar_cod_marca) on delete restrict on update restrict;

alter table producto add constraint FK_PASSWORD foreign key (pass_rut_persona)
      references password (pass_rut_persona) on delete restrict on update restrict;
gracias