Bem pessoal tenho uma tabela, IMOVEIS. Nessa tabela tenho dois campos que sao foreign key para uma mesma tabela, estou usando a opção de Design no SQL Server Management Studio. ai quando crio a primeira foreign key normalmente, mas quando tentou criar a do segundo campo ocorre um erro: o erro é esse:
Code Snippet
'UNIDADES_MEDIDAS' table saved successfully
'IMOVEIS' table
- Unable to create relationship 'FK_IMOVEIS_X_UNID_MEDIDA_TOTAL'.
Introducing FOREIGN KEY constraint 'FK_IMOVEIS_X_UNID_MEDIDA_TOTAL' on table 'IMOVEIS' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint. See previous errors.
O codigo de criação da minha tabela é:
Code Snippet
USE
[IMOBILIARIA_WEB]
GO
/****** Object: Table [dbo].[IMOVEIS] Script Date: 09/05/2008 18:25:16 ******/
SET
ANSI_NULLS ON
GO
SET
QUOTED_IDENTIFIER ON
GO
SET
ANSI_PADDING ON
GO
CREATE
TABLE [dbo].[IMOVEIS](
[CODG_IMOVEL] [numeric]
(18, 0) IDENTITY(1,1) NOT NULL,
[DESC_IMOVEL] [varchar]
(100) NOT NULL,
[CODG_TIPO_IMOVEL] [numeric]
(18, 0) NOT NULL,
[CODG_PESSOA_CRIACAO] [numeric]
(18, 0) NOT NULL,
[DATA_CRIACAO] [datetime]
NOT NULL,
[CODG_PESSOA_ULTIMA_ALTERACAO] [numeric]
(18, 0) NOT NULL,
[DATA_ULTIMA_ALTERACAO] [datetime]
NOT NULL,
[CODG_BAIRRO] [numeric]
(18, 0) NULL,
[NUME_QUARTOS] [int]
NULL,
[NUME_SUITES] [int]
NULL,
[AREA_TOTAL] [numeric]
(14, 2) NULL,
[CODG_UNIDADE_MEDIDA_AREA_CONSTRUIDA] [numeric]
(18, 0) NULL,
[AREA_CONSTRUIDA] [numeric]
(14, 2) NULL,
[CODG_UNIDADE_MEDIDA_AREA_TOTAL] [numeric]
(18, 0) NULL,
[DESC_LOGRADOURO_ENDERECO] [varchar]
(50) NULL,
[DESC_NUMERO_ENDERECO] [varchar]
(50) NULL,
[DESC_COMPLEMENTO_ENDERECO] [varchar]
(50) NULL,
[INDI_ESTADO] [char]
(1) NULL,
CONSTRAINT [PK_IMOVEIS] PRIMARY KEY CLUSTERED
(
[CODG_IMOVEL]
ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
)
ON [PRIMARY]
GO
SET
ANSI_PADDING OFF
GO
ALTER
TABLE [dbo].[IMOVEIS] WITH CHECK ADD CONSTRAINT [FK_IMOVEIS__X_BAIRROS] FOREIGN KEY([CODG_BAIRRO])
REFERENCES
[dbo].[BAIRROS] ([CODG_BAIRRO])
ON
UPDATE CASCADE
ON
DELETE CASCADE
GO
ALTER
TABLE [dbo].[IMOVEIS] CHECK CONSTRAINT [FK_IMOVEIS__X_BAIRROS]
GO
ALTER
TABLE [dbo].[IMOVEIS] WITH CHECK ADD CONSTRAINT [FK_IMOVEIS_X_UNID_MEDIDA_CONSTRUIDA] FOREIGN KEY([CODG_UNIDADE_MEDIDA_AREA_CONSTRUIDA])
REFERENCES
[dbo].[UNIDADES_MEDIDAS] ([CODG_UNIDADE_MEDIDA])
ON
UPDATE CASCADE
ON
DELETE CASCADE
GO
ALTER
TABLE [dbo].[IMOVEIS] CHECK CONSTRAINT [FK_IMOVEIS_X_UNID_MEDIDA_CONSTRUIDA]
GO
ALTER
TABLE [dbo].[IMOVEIS] WITH CHECK ADD CONSTRAINT [CK_IMOVEIS_INDI_ESTADO] CHECK (([INDI_ESTADO]='U' OR [INDI_ESTADO]='N'))
GO
ALTER
TABLE [dbo].[IMOVEIS] CHECK CONSTRAINT [CK_IMOVEIS_INDI_ESTADO]
Como podem ver tenho o campo CODG_UNIDADE_MEDIDA_AREA_CONSTRUIDA e o CODG_UNIDADE_MEDIDA_AREA_TOTAL, que fazem referencia a tabela UNIDADES_MEDIDAS. Na verdade deveria, tanto que para o campo CODG_UNIDADE_MEDIDA_AREA_TOTAL a Foreign Key nem é gerada no script. O que devo fazer? Não posso ter em uma tabela dois campos Foreig Key para uma outra tabela comum? Criei dois campos pois posso ter unidades de medidas diferentes para a AREA_CONTRUIDA e para a AREA_TOTAL.
Desde já agradeço a ajuda de todos.