como deletar registros utilizando o cascade
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
Post 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
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.
09/03/2006
Pestana
abraços
Pestana.
10/03/2006
Mysys
10/03/2006
Pestana
abraços
Pestana.
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!!!
Clique aqui para fazer login e interagir na Comunidade :)