0

FOREIGN KEY

criado por Cleiton Becker em 22/10/2009 11:37pm
Seguinte to fazendo uma galeria de fotos, porém quero fazer uma FK com cascade só que ta complicado mesmo colocado o código para ser executado.

Segue

ADD CONSTRAINT `fk_fotos` FOREIGN KEY (`id_galeria`) REFERENCES `bd_dados`.`galeria` (`id_galeria`) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE;
SHOW CREATE TABLE `bd_dados`.`galeria_foto`;


Tabela 1

CREATE TABLE `galeria` (
`id_galeria` int(11) unsigned NOT NULL auto_increment,
`titulo` varchar(255) default NULL,
`img_inicial` varchar(255) default NULL,
`diretorio` varchar(255) default NULL,
`comentario` varchar(255) default NULL,
`dt_publicacao` date default '0000-00-00',
`ativo` int(1) default '0',
PRIMARY KEY (`id_galeria`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


Tabela 2

CREATE TABLE `galeria_foto` (
`id_foto` int(11) unsigned NOT NULL auto_increment,
`id_galeria` int(11) default NULL,
`arquivo` varchar(255) default NULL,
`comentario` varchar(255) default NULL,
PRIMARY KEY (`id_foto`),
KEY `ftk_fotos` (`id_galeria`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


To usando MySQL 5.0 e o MySQL-Front 5.0 se alguém tiver alguma outra sujestão será bem vinda.

Desde já obrigado.

Lista de Respostas:

0
23/10/2009 4:44pm
(~14 anos atrás)
Henrique Luz respondeu:
"quero fazer uma FK com cascade só que ta complicado mesmo colocado o código para ser executado."

Amigo, não entendi o que você quis dizer. Pode explicar melhor?
Abraços,

0
23/10/2009 6:35pm
(~14 anos atrás)
Cleiton Becker respondeu:
pois bem tenho duas tabelas para uma galeria de fotos que estou fazendo, quando deletar as fotos da tabela galeria, quero que o proprio mysql delete os registros da outra tabela onde fica as fotos armazenadas.

Ou seja faço o relacionamento das duas tabelas, mas ele só permite o atributo restict ja os outros no o cascade não está funcionando.

Coloquei as duas tabelas acima juntamente com a FK.

Abs

0
26/11/2009 12:24am
(~14 anos atrás)
Cleiton, você primeiro criou as tabelas depois quer adicionar as chaves, certo?

Se este é o caso, tem que usar "ALTER TABLE". Você usou?

Seria assim:

ALTER TABLE `galeria_foto` ADD CONSTRAINT `fk_fotos` FOREIGN KEY (`id_galeria`) REFERENCES `bd_dados`.`galeria` (`id_galeria`) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE;

Mas você também poderia especificar durante a criação da tabela. Talvez, para este caso, seja útil desabilitar a checagem de chaves:

SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0

create table ...
create table ...

SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)