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

Pregunta sobre MysqlWorkBench y su scritp

Estas en el tema de Pregunta sobre MysqlWorkBench y su scritp en el foro de Bases de Datos General en Foros del Web. hola estoy haciendo base de datos con mysql WorkBench y digamos creo uan tabla y el me genera este codigo Código: DROP TABLE IF EXISTS ...
  #1 (permalink)  
Antiguo 28/05/2010, 11:24
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 8 meses
Puntos: 15
Pregunta sobre MysqlWorkBench y su scritp

hola estoy haciendo base de datos con mysql WorkBench y digamos creo uan tabla y el me genera este codigo

Código:
DROP TABLE IF EXISTS `login` ;

SHOW WARNINGS;
CREATE  TABLE IF NOT EXISTS `login` (
  `idlogin` INT NOT NULL AUTO_INCREMENT ,
  `nombre` VARCHAR(25) NOT NULL ,
  `contrasena` VARCHAR(45) NOT NULL ,
  `iddepartamento` INT NOT NULL ,
  PRIMARY KEY (`idlogin`) )
ENGINE = InnoDB;

SHOW WARNINGS;
CREATE INDEX `iddepartamento` ON `login` (`iddepartamento` ASC) ;

SHOW WARNINGS;
y supuestamente en el editor le coloque para que eliminara en casacada y porque en este scritp no me sale los "on delete casacade y on update cascade"

ni si quiera sale las referencias de las llaves foraneas.

saludos
  #2 (permalink)  
Antiguo 28/05/2010, 12:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Pregunta sobre MysqlWorkBench y su scritp

Porque esa es solamente la tabla primaria.
Los ON DELETE CASCADE yON UPDATE CASCADE sólo actúan en las FOREIGN KEYs, por lo cual si hubiese otra tabla que usase a ésta como origen de una FK, al borrar en esta tabla un registro, se borraría en la segunda.

¿Se entiende?

Lo que sucede aquí es que este script sólo nos muestra una tabla, la cual carece de FKs.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 28/05/2010, 14:10
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 8 meses
Puntos: 15
Respuesta: Pregunta sobre MysqlWorkBench y su scritp

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Porque esa es solamente la tabla primaria.
Los ON DELETE CASCADE yON UPDATE CASCADE sólo actúan en las FOREIGN KEYs, por lo cual si hubiese otra tabla que usase a ésta como origen de una FK, al borrar en esta tabla un registro, se borraría en la segunda.

¿Se entiende?

Lo que sucede aquí es que este script sólo nos muestra una tabla, la cual carece de FKs.

muchas gracias por tu respuesta pero se me olvido decir que

`iddepartamento` INT NOT NULL ,


es una Fk a eso me referia se me olvido decir XD


esta es la tabla que contiene la PK

Código:
DROP TABLE IF EXISTS `departamento` ;

SHOW WARNINGS;
CREATE  TABLE IF NOT EXISTS `departamento` (
  `iddepartamento` INT NOT NULL AUTO_INCREMENT ,
  `nombre_departamento` VARCHAR(45) NOT NULL ,
  PRIMARY KEY (`iddepartamento`) )
ENGINE = InnoDB;

SHOW WARNINGS;


saludos mi pregunta es esa porque no salen los on update y on delete nisiquiera sale la referencia de la clave

saludos
  #4 (permalink)  
Antiguo 28/05/2010, 14:33
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 8 meses
Puntos: 15
Respuesta: Pregunta sobre MysqlWorkBench y su scritp

Hola ya puedo soluciona lo de las Fk era que estaba omitiendo una casilla que exporta las Fk y ahora lo tira asi

Código:
DROP TABLE IF EXISTS `mydb`.`login` ;

SHOW WARNINGS;
CREATE  TABLE IF NOT EXISTS `mydb`.`login` (
  `idlogin` INT NOT NULL AUTO_INCREMENT ,
  `nombre` VARCHAR(25) NOT NULL ,
  `contrasena` VARCHAR(45) NOT NULL ,
  `iddepartamento` INT NOT NULL ,
  PRIMARY KEY (`idlogin`) ,
  INDEX `iddepartamento` (`iddepartamento` ASC) ,
  CONSTRAINT `iddepartamento`
    FOREIGN KEY (`iddepartamento` )
    REFERENCES `mydb`.`departamento` (`iddepartamento` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;

SHOW WARNINGS;
y cuando subo el scritp para crear la base de datos me dice este error

Can't create table 'mydb.login' (errno: 121)


que pude ser?


saludos
  #5 (permalink)  
Antiguo 28/05/2010, 15:17
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Pregunta sobre MysqlWorkBench y su scritp

¿Y existe la base "mydb" antes de intentar crear esa?
¿Existe la tabla mydb.departamento previamente?
No te olvides que no se puede definir una FK si la tabla referida no existe antes, y tampoco se pueden crear tablas en una base que no existe...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 28/05/2010, 15:35
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 8 meses
Puntos: 15
Respuesta: Pregunta sobre MysqlWorkBench y su scritp

Si todo eso esta , una pregunta hay algun problema si el indice se llama igual que la fk?

saludos
  #7 (permalink)  
Antiguo 28/05/2010, 15:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Pregunta sobre MysqlWorkBench y su scritp

Por lo pronto, si. No debe haber dos objetos con el mismo nombre en una base, especialmente constraint e índices.

Postea todo el script. Sin ver todo, no se pueden apreciar otros errores posibles.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 28/05/2010, 15:44
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 8 meses
Puntos: 15
Respuesta: Pregunta sobre MysqlWorkBench y su scritp

es este.



DROP TABLE IF EXISTS `departamento` ;

SHOW WARNINGS;
CREATE TABLE IF NOT EXISTS `departamento` (
`iddepartamento` INT NOT NULL AUTO_INCREMENT ,
`nombre_departamento` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`iddepartamento`) )
ENGINE = InnoDB;

SHOW WARNINGS;

-- -----------------------------------------------------
-- Table `login`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `login` ;

SHOW WARNINGS;
CREATE TABLE IF NOT EXISTS `login` (
`idlogin` INT NOT NULL AUTO_INCREMENT ,
`nombre` VARCHAR(25) NOT NULL ,
`contrasena` VARCHAR(45) NOT NULL ,
`iddepartamento` INT NOT NULL ,
PRIMARY KEY (`idlogin`) ,
CONSTRAINT `iddepartamento`
FOREIGN KEY (`iddepartamento` )
REFERENCES `departamento` (`iddepartamento` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;

SHOW WARNINGS;
CREATE INDEX `iddepartamento` ON `login` (`iddepartamento` ASC) ;

SHOW WARNINGS;



la base de datos ya ezsta creada y exite.

saludos
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 23:08.