SSMS
 sql >> Base de Dados >  >> Database Tools >> SSMS

O SQL Server Management Studio NÃO me permite criar várias chaves estrangeiras para várias chaves primárias


Acho que você deve ter encontrado uma falha estranha no SSMS. Consegui criar seu esquema usando o SSMS 2014 sem erros. Ele pré-preencheu as três colunas de chave primária composta ao adicionar o novo FK. Tive o cuidado de garantir que todos estivessem em branco antes de começar a adicionar as duas colunas no FK. Talvez o SSMS tenha pensado que uma das linhas em branco ainda continha dados.

Editar:Acabei de pensar mais, o SSMS é conhecido por armazenar em cache todas as alterações feitas ao editar uma tabela. Por exemplo, se você for modificar duas tabelas e tiver ambas as janelas de edição abertas. Em seguida, você altera o PK em uma janela e tenta referenciá-lo na segunda janela, ocorrerá um erro porque armazenou em cache o que era o esquema para a primeira tabela quando a janela foi aberta pela primeira vez.

Aqui está meu DDL gerado:
CREATE TABLE [dbo].[AppRegion](
    [appname] [nvarchar](50) NOT NULL,
    [isocode] [char](5) NOT NULL,
 CONSTRAINT [PK_AppRegion] PRIMARY KEY CLUSTERED 
(
    [appname] ASC,
    [isocode] ASC
)
) ON [PRIMARY]

CREATE TABLE [dbo].[Translation](
    [ResourceKey] [nvarchar](128) NOT NULL,
    [appname] [nvarchar](50) NOT NULL,
    [isocode] [char](5) NOT NULL,
    [text] [nvarchar](400) NULL,
 CONSTRAINT [PK_Translation] PRIMARY KEY CLUSTERED 
(
    [ResourceKey] ASC,
    [appname] ASC,
    [isocode] ASC
)
) ON [PRIMARY]

ALTER TABLE [dbo].[Translation]   ADD  CONSTRAINT [FK_Translation_AppRegion] FOREIGN KEY([appname], [isocode])
REFERENCES [dbo].[AppRegion] ([appname], [isocode])