Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

ayuda con script

Estas en el tema de ayuda con script en el foro de Mysql en Foros del Web. Hola a todos en el Foro Quisiera que me ayudaran en lo siguiente tengo las siguientes tablas Código: /*==============================================================*/ /* Table: VOLUNTARIO */ /*==============================================================*/ create ...
  #1 (permalink)  
Antiguo 16/08/2007, 17:15
 
Fecha de Ingreso: junio-2006
Mensajes: 137
Antigüedad: 17 años, 10 meses
Puntos: 0
ayuda con script

Hola a todos en el Foro

Quisiera que me ayudaran en lo siguiente tengo las siguientes tablas

Código:
/*==============================================================*/
/* Table: VOLUNTARIO                                            */
/*==============================================================*/
create table if not exists VOLUNTARIO
(
   VOL_RUT                        varchar(10)                    not null,
   VOL_NOMBRES                    varchar(30)                    not null,
   VOL_APE_PATERNO                varchar(30)                    not null,
   VOL_APE_MATERNO                varchar(30)                    not null,
   VOL_NACIONALIDAD               varchar(30)                    not null,
   VOL_FECHA_NAC                  date                           not null,
   VOL_SEXO                       char(1)                        not null,
   VOL_EDAD                       smallint                       not null,
   VOL_ESTADO_CIVIL               varchar(3)                     not null,
   VOL_DIRECCION                  varchar(50)                    not null,
   VOL_SECTOR                     varchar(30)			 not null,
   VOL_CIUDAD                     varchar(20)			 not null,
   VOL_TELEFONO_CASA              numeric(9,0)                   not null,
   VOL_TELEFONO_CTO               numeric(9,0)                   not null,
   VOL_CELULAR                    numeric(9,0),
   VOL_CORREO                     varchar(30),
   VOL_TIPO                       varchar(2)                     not null,
   VOL_FOTO                       varchar(40)                    not null,
   VOL_G_SANGRE                   varchar(10)                    not null,
   VOL_FECHA_REGISTRO             datetime			 not null,
   VOL_FECHA_ACT                  datetime			 not null,
   VOL_USUARIO_ACT                varchar(8) 			 not null,
   primary key (VOL_RUT)
)ENGINE=INNODB;

/*==============================================================*/
/* Table: ASISTENCIA                                            */
/*==============================================================*/
create table if not exists ASISTENCIA
(
   PAR_ID                         smallint                       not null,
   PAR_PERIODO                    smallint                       not null,
   VOL_RUT                        varchar(10)                    not null,
   ASI_EXCUSADO                   char(1)                        not null,
   ASI_FECHA_REGISTRO             datetime                       not null,
   ASI_FECHA_ACT                  datetime                       not null,
   ASI_USUARIO_ACT                varchar(8)                     not null,
   primary key (PAR_ID, PAR_PERIODO, VOL_RUT),
   INDEX (PAR_ID, PAR_PERIODO),
   FOREIGN KEY (PAR_ID, PAR_PERIODO)
	REFERENCES PARTE(PAR_ID, PAR_PERIODO)
    	ON UPDATE CASCADE ON DELETE CASCADE,
   INDEX (VOL_RUT),
   FOREIGN KEY (VOL_RUT)
	REFERENCES VOLUNTARIO(VOL_RUT)
        ON UPDATE CASCADE ON DELETE CASCADE
)ENGINE=INNODB;


/*==============================================================*/
/* Table: HOJA_DE_VIDA                                          */
/*==============================================================*/
create table if not exists HOJA_DE_VIDA
(
   HDV_FOLIO                      smallint                       not null,
   VOL_RUT                        varchar(10)                    not null,
   HDV_FECHA_POST                 date                           not null,
   HDV_FECHA_ACEP_HDG             date                           not null,
   HDV_ANIOS_SERVICIO             smallint                       not null,
   HDV_FECHA_REGISTRO             datetime                       not null,
   HDV_FECHA_ACT                  datetime                       not null,
   HDV_USUARIO_ACT                varchar(8)                     not null,
   primary key (HDV_FOLIO),
   INDEX (VOL_RUT),
   FOREIGN KEY (VOL_RUT)
	REFERENCES VOLUNTARIO(VOL_RUT)
    	ON UPDATE CASCADE
)ENGINE=INNODB;
El tema es que al eliminar a un voluntario automaticamente borrara su hoja de vida y eso no es lo que necesito. Lo que quiero es que al eliminar un voluntario solo elimine el voluntario y deje intacta la hoja de vida, el problema esta en que la tabla voluntario envia como foranea su clave a la tabla hoja de vida y por dependencia borrara todo registro .

Espero que se haya entendido mi consulta.

Agradecido de antemano

Chauz
  #2 (permalink)  
Antiguo 17/08/2007, 01:21
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Re: ayuda con script

Eso te lo hace porque las tablas están relacionadas y al borrar el registro padre, automáticamente elimina los datos hijos, o sea, los ligados a él. Para evitar eso, cambia el script para que no cree las tablas INNODB, ya que eso las relaciona (si lo especificas) y al borrar un elemento, lo hace en cascada.

Lo que no comprendo es en qué te puede servir la hoja de vida si no tiene quien la diseño?
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 17/08/2007, 23:19
 
Fecha de Ingreso: junio-2006
Mensajes: 137
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: ayuda con script

Hola gracias por responder, te explico, lo primero pense que se podia hacer lo que preguntaba, lo que pasa es que las tablas si deben estar relacionadas.

Lo otro sobre el ejemplo que coloque era solo para ayudar a explicar lo que necesito, me equivoque de ejemplo, ya que la eliminacion de un voluntario solo sera logica, ya que necesito guardar historicos.

De todos modos ya se me ocurrio la forma de hacerlo, se agradece el tiempo dedicado en responder.

Chauz
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:10.