sql >> Databasteknik >  >> RDS >> Sqlserver

Sammansatt primär nyckel sql relation

Om du har en komposit primärnyckel, sedan alla främmande nyckelbegränsningar som refererar till den måste använda alla kolumner av den sammansatta primärnyckeln.

Så i ditt fall - TableTwo måste referens TableOne(ReportID, Date)

Det enda sättet att komma runt detta skulle vara att skapa ett UNIQUE INDEXTableOne (ReportID) - då kan du skapa en främmande nyckelreferens enbart till den unika begränsningen.

Men det väcker då frågan:varför är inte ReportID endast primärnyckeln, om den redan är unik (eftersom du kan sätta ett UNIQUE INDEX på den) och INTE NULL (eftersom den är en del av sammansättningen PK) ?

Steg 1:skapa UNIQUE INDEX :

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

Steg 2:skapa den främmande nyckeln från TableTwo :

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



  1. Hur genererar jag kapslade json-objekt med inbyggda mysql-json-funktioner?

  2. Toppverktyg för säkerhetskopiering för PostgreSQL

  3. Group_Concat i Concat fungerar inte med NULL-värden

  4. Python MySQLdb platshållare syntax