Fórum Restricao para delecao #48132
18/11/2004
0
E ai, pessoal !!!
Quero fazer restricao quando vou deletar um registro numa tabela, este vai ver que tem referencia com outra bloqueado a delecao e emitindo msg tipo ´voce tem registros agregados em outras tabelas, delecao bloqueada´
Quando tentar deletar um COD_UF e este estiver cadastrado na tabela MUNICIPIO, que este esta delecao seja bloqueada
1) SITUACAO
CREATE TABLE UF(
COD_UF INT NOT NULL PRIMARY KEY,
NOME_UF CHAR(2) NOT NULL
);
CREATE TABLE MUNICIPIO(
COD_MUN INT NOT NULL PRIMARY KEY,
NOME_MUN VARCHAR(20) NOT NULL,
UF_MUN INT NOT NULL,
FOREIGN KEY (UF_MUN) REFERENCES UF(COD_UF));
2) SITUACAO - peguei um exemplo, mas neste faz delecao em cascata, justamente o que nao quero
CREATE TABLE UF(
COD_UF INT NOT NULL PRIMARY KEY,
NOME_UF CHAR(2) NOT NULL
);
CREATE TABLE MUNICIPIO(
COD_MUN INT NOT NULL PRIMARY KEY,
NOME_MUN VARCHAR(20) NOT NULL,
UF_MUN INT NOT NULL,
FOREIGN KEY (UF_MUN) REFERENCES UF(COD_UF) ON DELETE CASCADE);
- Alguns comentaram que usam Constraint no MySQL, eu nunca usei isso, qual a melhor maneira de bloquear tal delecao ?
Quero fazer restricao quando vou deletar um registro numa tabela, este vai ver que tem referencia com outra bloqueado a delecao e emitindo msg tipo ´voce tem registros agregados em outras tabelas, delecao bloqueada´
Quando tentar deletar um COD_UF e este estiver cadastrado na tabela MUNICIPIO, que este esta delecao seja bloqueada
1) SITUACAO
CREATE TABLE UF(
COD_UF INT NOT NULL PRIMARY KEY,
NOME_UF CHAR(2) NOT NULL
);
CREATE TABLE MUNICIPIO(
COD_MUN INT NOT NULL PRIMARY KEY,
NOME_MUN VARCHAR(20) NOT NULL,
UF_MUN INT NOT NULL,
FOREIGN KEY (UF_MUN) REFERENCES UF(COD_UF));
2) SITUACAO - peguei um exemplo, mas neste faz delecao em cascata, justamente o que nao quero
CREATE TABLE UF(
COD_UF INT NOT NULL PRIMARY KEY,
NOME_UF CHAR(2) NOT NULL
);
CREATE TABLE MUNICIPIO(
COD_MUN INT NOT NULL PRIMARY KEY,
NOME_MUN VARCHAR(20) NOT NULL,
UF_MUN INT NOT NULL,
FOREIGN KEY (UF_MUN) REFERENCES UF(COD_UF) ON DELETE CASCADE);
- Alguns comentaram que usam Constraint no MySQL, eu nunca usei isso, qual a melhor maneira de bloquear tal delecao ?
Bibi
Curtir tópico
+ 0
Responder
Posts
18/11/2004
Fsflorencio
Uma constraint (restrição) aparece automaticamente quando vc cria uma chave primária ou uma chave estrangeira. Particularmente uso o firebird manager para visualizar as constraints e outros objetos.
Vejamos a situação: Peguei um exemplo, mas neste faz delecao em cascata, justamente o que nao quero
É só remover do script a parte ´ON DELETE CASCADE´.
Neste caso quando vc deletar algum registro da tabela uf ele vai dar um erro e não vai permitir que o registro seja deletado.
Para o erro ficar mais ´bonito´, vc pode colocar um componente TApplicationEvents e no evento onexception tratar o retorno da variável E que é do tipo exception.
Além do ON DELETE, temos o ON UPDATE que atualiza em Cascata. Se vc muda o código da uf, ele muda em todas as tabelas dependentes, sendo que vc pode usar os dois juntos ON DELETE CASCADE ON UPDATE CASCADE.
Vejamos a situação: Peguei um exemplo, mas neste faz delecao em cascata, justamente o que nao quero
É só remover do script a parte ´ON DELETE CASCADE´.
Neste caso quando vc deletar algum registro da tabela uf ele vai dar um erro e não vai permitir que o registro seja deletado.
Para o erro ficar mais ´bonito´, vc pode colocar um componente TApplicationEvents e no evento onexception tratar o retorno da variável E que é do tipo exception.
Além do ON DELETE, temos o ON UPDATE que atualiza em Cascata. Se vc muda o código da uf, ele muda em todas as tabelas dependentes, sendo que vc pode usar os dois juntos ON DELETE CASCADE ON UPDATE CASCADE.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)