FOREIGN KEY
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.
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.
comentários (0)
suspender
Lista de Respostas:
23/10/2009 4:44pm
(~15 anos atrás)
(~15 anos atrás)
"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,
Amigo, não entendi o que você quis dizer. Pode explicar melhor?
Abraços,
23/10/2009 6:35pm
(~15 anos atrás)
(~15 anos atrás)
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
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
26/11/2009 12:24am
(~15 anos atrás)
(~15 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
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