Deleção em Cascata
Senhores tenho duas tabelas com a seguinte estrutura
[color=blue:fcad56dbd0]CREATE TABLE ´PERFIL´
(
´LI_IDPERFIL´INTEGER NOT NULL,
´STR_NOMEPERFIL´VARCHAR(40) NOT NULL,
´STR_SISTEMA´CHAR(30),
PRIMARY KEY (´LI_IDPERFIL´)
);[/color:fcad56dbd0]
[color=red:fcad56dbd0]CREATE TABLE ´ITEMPERFIL´
(
´LI_IDITEMPERFIL´INTEGER NOT NULL,
´LI_IDPERFIL´INTEGER NOT NULL,
´LI_IDMENU´INTEGER,
´LI_INCLUI´INTEGER,
´LI_EXCLUI´INTEGER,
´LI_ALTERA´INTEGER,
´LI_CONSULTA´INTEGER,
´LI_DESIGNER´INTEGER,
´LI_IMPRIMIR´INTEGER,
PRIMARY KEY (´LI_IDITEMPERFIL´)
);
ALTER TABLE ´ITEMPERFIL´ ADD CONSTRAINT ´FK_LI_IDPERFIL´ FOREIGN KEY (´LI_IDPERFIL´) REFERENCES PERFIL (´LI_IDPERFIL´);[/color:fcad56dbd0]
ou Seja, tenho a tabela [b:fcad56dbd0]Perfil[/b:fcad56dbd0] que é Tabela Master e a Tabela I[b:fcad56dbd0]temPerfil[/b:fcad56dbd0] que é [color=violet:fcad56dbd0]DETALHE[/color:fcad56dbd0]
A minha pergunta é Existe algum recurso que eu possa utilizar para que quando o Usuario excluir um perfil os registros correspondente da tabela ItemPerfil também serem excluidos?
[color=blue:fcad56dbd0]CREATE TABLE ´PERFIL´
(
´LI_IDPERFIL´INTEGER NOT NULL,
´STR_NOMEPERFIL´VARCHAR(40) NOT NULL,
´STR_SISTEMA´CHAR(30),
PRIMARY KEY (´LI_IDPERFIL´)
);[/color:fcad56dbd0]
[color=red:fcad56dbd0]CREATE TABLE ´ITEMPERFIL´
(
´LI_IDITEMPERFIL´INTEGER NOT NULL,
´LI_IDPERFIL´INTEGER NOT NULL,
´LI_IDMENU´INTEGER,
´LI_INCLUI´INTEGER,
´LI_EXCLUI´INTEGER,
´LI_ALTERA´INTEGER,
´LI_CONSULTA´INTEGER,
´LI_DESIGNER´INTEGER,
´LI_IMPRIMIR´INTEGER,
PRIMARY KEY (´LI_IDITEMPERFIL´)
);
ALTER TABLE ´ITEMPERFIL´ ADD CONSTRAINT ´FK_LI_IDPERFIL´ FOREIGN KEY (´LI_IDPERFIL´) REFERENCES PERFIL (´LI_IDPERFIL´);[/color:fcad56dbd0]
ou Seja, tenho a tabela [b:fcad56dbd0]Perfil[/b:fcad56dbd0] que é Tabela Master e a Tabela I[b:fcad56dbd0]temPerfil[/b:fcad56dbd0] que é [color=violet:fcad56dbd0]DETALHE[/color:fcad56dbd0]
A minha pergunta é Existe algum recurso que eu possa utilizar para que quando o Usuario excluir um perfil os registros correspondente da tabela ItemPerfil também serem excluidos?
Ariovaldo
Curtidas 0
Respostas
Rjun
01/04/2005
No SQL Server eu faço assim
Constraint NomeConstraint Foreign Key (IdKey) References Tabela (Id) On Update Cascade On Delete Cascade
Constraint NomeConstraint Foreign Key (IdKey) References Tabela (Id) On Update Cascade On Delete Cascade
GOSTEI 0
Gandalf.nho
01/04/2005
Qual o seu banco de dados? Pelo script parece ser IB/FB. Se for, altere a linha de criação do relacionamento assim:
Assim os registros da tabela detalhe serão excluídos automaticamente junto com o registro master.
ALTER TABLE "ITEMPERFIL" ADD CONSTRAINT "FK_LI_IDPERFIL" FOREIGN KEY ("LI_IDPERFIL") REFERENCES PERFIL ("LI_IDPERFIL") ON DELETE CASCADE; Assim os registros da tabela detalhe serão excluídos automaticamente junto com o registro master.
GOSTEI 0
Raserafim
01/04/2005
ariovaldo, os dois colegas estão certos (fazendo diretamente pelo script), mas caso vc esteja utilizando alguma ferramenta para criar as tabelas vc deve encontrar isso (vai variar de ferramenta pra ferramenta, mas de modo geral) nas propriedades do campo extrangeiro (no seu caso LI_IDPERFIL da tabela ITEMPERFIL) algo como Update Role e Delete Role.
Basta alterar a opção para algo como Cascate (depende da ferramenta)
Este recurso que vc busca faz parte da chamada Integridade Referencial.
Basta alterar a opção para algo como Cascate (depende da ferramenta)
Este recurso que vc busca faz parte da chamada Integridade Referencial.
GOSTEI 0