Gostaria de saber quantas clausulas on update cascade ou on delete cascade podem haver numa mesma tabela, pois nao acho essa informacao no books on-line, nem no google.
Segundo meu instrutor so pode haver uma sendo q ele nao me deu certeza se alguem poder me ajudar sou muito grato .
valeu!
Registrado em: Mar 17, 2005 Mensagens: 331 Localização: Mogi-Guacu
Enviada: 30 Jul 2008 13:53 Assunto:
ON DELETE e ON UPDATE
sao parametros (ou atributos) de uma Foreign Key e nao de uma tabela.
Os possiveis parametros sao:
{ NO ACTION | CASCADE | SET NULL | SET DEFAULT }
NO ACTION é o padrao se nao for especificado ON DELETE na criaçao da FK.
Como o Sanches comentou, depende de quantos relacionamentos voce tem na tabela feitos atraves de FKs.
ou seja, por tabela voce pode ter varios ON DELETE cada um apontando para uma tabela diferente.
Dai pode surgir a duvida, mas se eu tiver duas FKs para a mesma tabela?
nesse caso vc terá uma delas com ON DELETE CASCADE (por exemplo) e a outra FK com NO ACTION.
Se colocar as duas como ON DELETE CASCADE, na criaçao da segunda voce deve receber uma mensagem de erro parecida como essa:
Introducing FOREIGN KEY constraint 'FKname' on table 'TABLEname' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. _________________ Alex Rosa
http://alexrosadba.wordpress.com/
We recommend that a table contain no more than 253 FOREIGN KEY constraints, and that it be referenced by no more than 253 FOREIGN KEY constraints. Consider the cost of enforcing FOREIGN KEY constraints when you design your database and applications.
Ou seja, a MS não recomenda mais que 253 FKs, onde cada uma você pode ter um CASCADE, desde que não haja duas para uma mesma tabela, como o Alex já disse.
Registrado em: Nov 19, 2008 Mensagens: 1 Localização: Campinas/SP
Enviada: 19 Nov 2008 21:36 Assunto:
Mas galera, estou com um problema nessa questao de mais de uma FK para a mesma tabela!
meu case é o seguinte:
tenho um banco com a tabela empresas e pedidos, a tabela pedidos tem varias colunas e tres delas sao: id_empresa_entrega, id_empresa_cobranca, id_empresa_faturamento.
Assim, a pedido do cliente, eu PRECISO ter a FK com ON DELETE CASCADE nas tres colunas para a coluna id_empresa da tabela empresas.
Só que quando eu tento criar a segunda FK, o sql server 2005 lança o erro:
"Introducing FOREIGN KEY constraint 'FKname' on table 'TABLEname' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints."
Como que eu faço para que funcione do jeito que eu preciso? tem como contornar esse erro?