sql >> Database teknologi >  >> RDS >> Sqlserver

Sammensat primær nøgle sql relation

Hvis du har en sammensat primær nøgle, derefter alle fremmednøglebegrænsninger, der refererer til det, skal bruge alle kolonner af den sammensatte primærnøgle.

Så i dit tilfælde - TableTwo skal reference TableOne(ReportID, Date)

Den eneste måde at undgå dette på ville være at oprette et UNIQUE INDEXTableOne (ReportID) - så kan du oprette en fremmednøglereference til den unikke begrænsning alene.

Men det rejser så spørgsmålet:hvorfor er ReportID ikke alene den primære nøgle, hvis den allerede er unik (da du kan sætte en UNIQUE INDEX på den) og IKKE NULL (da den er en del af sammensætningen PK) ?

Trin 1:Opret UNIQUE INDEX :

CREATE UNIQUE NONCLUSTERED INDEX UIX_TableOne ON dbo.TableOne(ReportID);

Trin 2:Opret fremmednøglen fra TableTwo :

ALTER TABLE dbo.TableTwo
ADD CONSTRAINT FK_TableTwo_TableOne
FOREIGN KEY(ReportID) REFERENCES dbo.TableOne(ReportID)



  1. MySQL specificer vilkårlig rækkefølge efter id

  2. hurtig synkronisering af kernedata og mysql-database

  3. Hvorfor er det stadig muligt at indsætte en fremmednøgle, der ikke eksisterer?

  4. Deltag og flere og betingelser