Fórum como deletar registros utilizando o cascade #30575
25/02/2006
0
Tenho o seguinte relacionamento: PRODUTO, FORNECEDOR e PROD_FORNEC. O Produto pode ter vários Fornecedores e o Fornecedor pode ter vários Produtos. Ao deletar o registro pai da tabela Produto eu queria que deletasse todos os registros filho da tabela Prod_Fornec tipo ‘cascade’, e assim também com as tabelas Fornecedor e Prod_Fornec.
Como se deleta registros utilizando On Delete Cascade?
Eu peguei o manual do mysql pra entender como se deleta registros na forma de On Delete Cascade, mas só que não consegui entender. Alguém poderia me ajudar?
Agradeço!
Pestana.

Pestana
Curtir tópico
+ 1Post mais votado
05/03/2006
CREATE TABLE parent (id INT NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE child (id INT, parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE CASCADE
) ENGINE=INNODB;
insert into parent value (1);
insert into child value (1,1);
ok criado as tabelas e lancado os valores..
delete from parent where id = 1
ele vai deletar o valor nas duas tabelas ....
um abraco
Mysys

Gostei + 1
Mais Posts
04/03/2006
Pestana
já faz tempo que eu estou tentando deletar registros utilizando cascade, mas até agora a única coisa que aparece é um erro de ‘1005’. Alguem sabe como resolver este problema?
abaixo segue o exemplo.
CREATE TABLE PRODUTO( COD_PRODUTO int(11) unsigned, DESCRICAO varchar(60), PRIMARY KEY(COD_PRODUTO)) TYPE=INNODB;
CREATE TABLE FORNECEDOR( COD_FORNECEDOR int(11) unsigned, RAZAOSOCIAL varchar(40), PRIMARY KEY(COD_FORNECEDOR)) TYPE=INNODB;
CREATE TABLE FORNEC_PROD( COD_FORNECPROD int(11) unsigned, COD_FORNEC int(11), COD_PROD int(11),
PRIMARY KEY(COD_FORNECPROD),
INDEX CODP(COD_PROD),
INDEX CODF(COD_FORNEC),
FOREIGN KEY(COD_FORNEC) REFERENCES FORNECEDOR(COD_FORNECEDOR) ON DELETE CASCADE,
FOREIGN KEY(COD_PROD) REFERENCES PRODUTO(COD_PRODUTO) ON DELETE CASCADE) TYPE=INNODB;
agradeço!
Pestana.
Gostei + 0
09/03/2006
Pestana
abraços
Pestana.
Gostei + 0
10/03/2006
Mysys
Gostei + 0
10/03/2006
Pestana
abraços
Pestana.
Gostei + 1
10/03/2006
Pestana
Gostei + 0
13/05/2016
Tiago Sales
CREATE TABLE parent (id INT NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE child (id INT, parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE CASCADE
) ENGINE=INNODB;
insert into parent value (1);
insert into child value (1,1);
ok criado as tabelas e lancado os valores..
delete from parent where id = 1
ele vai deletar o valor nas duas tabelas ....
um abraco
O maior problema aí é quando vc tem o Auto_increment ligado. Quando for adicionar um novo registro ele vai ficar com o ID 2 e as chaves filhas não irão acompanhar o contator. Olha a merda feita!!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)