sql >> Databasteknik >  >> RDS >> Sqlserver

Villkorlig främmande nyckel i SQL

Du kan använda PERSISTED COMPUTED kolumner med ett fall uttalande men i slutändan, det köper dig ingenting annat än overhead.

Den bästa lösningen skulle vara att modellera dem som tre distinkta värden till att börja med.

CREATE TABLE Mails (MailID INTEGER PRIMARY KEY)
CREATE TABLE Phones (PhoneID INTEGER PRIMARY KEY)
CREATE TABLE Emails (EmailID INTEGER PRIMARY KEY)

CREATE TABLE PartyChannel (
  ID INTEGER NOT NULL
  , ChannelID INTEGER NOT NULL
  , ChannelType CHAR(1) NOT NULL
  , MailID AS (CASE WHEN [ChannelType] = 'M' THEN [ChannelID] ELSE NULL END) PERSISTED REFERENCES Mails (MailID)
  , PhoneID AS  (CASE WHEN [ChannelType] = 'P' THEN [ChannelID] ELSE NULL END) PERSISTED REFERENCES Phones (PhoneID)
  , EmailID AS  (CASE WHEN [ChannelType] = 'E' THEN [ChannelID] ELSE NULL END) PERSISTED REFERENCES Emails (EmailID)
)

Ansvarsfriskrivning

bara för att du kan betyder det inte att du borde.



  1. Hur UNION en lista med tabeller hämtade från en annan tabell med en enda fråga?

  2. Postgresql:Kontrollera om Schema existerar?

  3. Infogar NULL i MySQL tidsstämpel

  4. Hur får man SQL Group Query i First Row Form?