Deleção em Cascata

Delphi

01/04/2005

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?


Ariovaldo

Ariovaldo

Curtidas 0

Respostas

Rjun

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


GOSTEI 0
Gandalf.nho

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:

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

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.


GOSTEI 0
POSTAR