Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

correia97

[Resolvido] constraint

Recommended Posts

Boa tarde

 

galera estou com o seguinte problema tenhum uma tabela de noticias e a tabela das coisa q vão aparecer na home

segue abaixo estrutura das tabelas

---tabela home
dbo].[RES_HOME](
	[COD] [int] IDENTITY(1,1) NOT NULL,
	[COD_HOME_FS] [int] NULL,  
	[TXT_TITLE_FS] [nvarchar](150) NULL,
	[TXT_CONTENT_FS] [text] NULL,
	[COD_HOME_SD] [int] NULL,
	[TXT_TITLE_SD] [nvarchar](150) NULL,
	[TXT_CONTENT_SD] [text] NULL,
	[COD_HOME_TD] [int] NULL,
	[TXT_TITLE_TD] [nvarchar](150) NULL,
	[TXT_CONTENT_TD] [text] NULL,
	[ATIVO] [bit] NULL,
	[CODIDIOMA] [int] NULL,
	[BANNER] [varchar](150) NULL,


-- tabela noticia
dbo].[RES_HOME](
	[COD] [int] IDENTITY(1,1) NOT NULL,
	[COD_HOME_FS] [int] NULL,
	[TXT_TITLE_FS] [nvarchar](150) NULL,
	[TXT_CONTENT_FS] [text] NULL,
	[COD_HOME_SD] [int] NULL,
	[TXT_TITLE_SD] [nvarchar](150) NULL,
	[TXT_CONTENT_SD] [text] NULL,
	[COD_HOME_TD] [int] NULL,
	[TXT_TITLE_TD] [nvarchar](150) NULL,
	[TXT_CONTENT_TD] [text] NULL,
	[ATIVO] [bit] NULL,
	[CODIDIOMA] [int] NULL,
	[BANNER] [varchar](150) NULL,

os campos da home [COD_HOME_FS] e [COD_HOME_SD] são foreing keys do [COD] da tabela noticia

preciso fazer uma constraint com o delete cascade para quando deletar um linha da tabela noticia deletar tbm da tabela home mas não estou conseguindo criar nas duas foreing key crio na primeira e na segunda da erro segue abaixo a forma que estou tentando criar essas constraint

 

alter table RES_HOME ADD CONSTRAINT DELETE_TBM FOREIGN KEY (COD_HOME_FS) REFERENCES RES_NOTICIA (COD) ON DELETE CASCADE;
alter table RES_HOME ADD CONSTRAINT DELETE_TBM2 FOREIGN KEY (COD_HOME_SD) REFERENCES RES_NOTICIA (COD) ON DELETE CASCADE;
favor m fale onde estou errando não conheço muito de sql

Compartilhar este post


Link para o post
Compartilhar em outros sites

Introducing FOREIGN KEY constraint 'DELETE_TBM2' on table 'RES_HOME' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele alerta para um possível cascade ciclico ou multiplo.

 

Como já tem um DELETE CASCADE o outro é desnessesário, não ?

 

alter table RES_HOME ADD CONSTRAINT DELETE_TBM FOREIGN KEY (COD_HOME_FS) REFERENCES RES_NOTICIA (COD) ON DELETE CASCADE;
alter table RES_HOME ADD CONSTRAINT DELETE_TBM2 FOREIGN KEY (COD_HOME_SD) REFERENCES RES_NOTICIA (COD) ON DELETE NO ACTION;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando eu testei isso no sql server 2005 o segundo era desnecessario porem no 2008 quando o usuario tenta deletar um registro da tabela res_noticia e esse regidtro consta na res_home ele da erro

por isso não intendi no 2005 não deu erro nenhum mas o cliente esta usando o 2008 ai com o banco dele da erro

 

Alguém tem mais alguma ideia ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando eu testei isso no sql server 2005 o segundo era desnecessario porem no 2008 quando o usuario tenta deletar um registro da tabela res_noticia e esse regidtro consta na res_home ele da erro

por isso não intendi no 2005 não deu erro nenhum mas o cliente esta usando o 2008 ai com o banco dele da erro

 

Alguém tem mais alguma ideia ?

 

Consegui resolver com uma trigger

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.