SSMS
 sql >> Base de données >  >> Database Tools >> SSMS

SQL Server Management Studio ne me permet PAS de créer plusieurs clés étrangères pour plusieurs clés primaires

Je pense que vous avez dû rencontrer un problème étrange dans SSMS. J'ai pu créer votre schéma en utilisant SSMS 2014 sans aucune erreur. Il a pré-rempli les trois colonnes de clé primaire composite lors de l'ajout du nouveau FK. J'ai pris soin de m'assurer qu'ils étaient tous masqués avant de commencer à ajouter les deux colonnes dans le FK. SSMS pensait peut-être que l'une des lignes vides contenait encore des données.

Modifier :Je viens d'avoir une autre pensée, SSMS est connu pour mettre en cache toutes les modifications apportées lors de la modification d'une table. Par exemple, si vous allez modifier deux tables et que les deux fenêtres d'édition sont ouvertes. Ensuite, vous modifiez le PK dans une fenêtre, puis essayez de le référencer dans la deuxième fenêtre, il y aura une erreur car il a mis en cache ce qu'était le schéma pour la première table lorsque la fenêtre a été ouverte pour la première fois.

Voici mon DDL généré :

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])