Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL में सशर्त विदेशी कुंजी

आप PERSISTED COMPUTED का उपयोग कर सकते हैं एक केस स्टेटमेंट के साथ कॉलम लेकिन अंत में, यह आपको ओवरहेड के अलावा कुछ नहीं खरीदता है।

सबसे अच्छा समाधान उन्हें शुरू करने के लिए तीन अलग-अलग मूल्यों के रूप में मॉडल करना होगा।

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

अस्वीकरण

सिर्फ इसलिए कि आप इसका मतलब यह नहीं कर सकते कि आपको चाहिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दी गई तालिका के लिए गतिशील रूप से कॉलम खोजें

  2. SQL सर्वर (T-SQL उदाहरण) में एक CHECK बाधा को कैसे सक्षम करें

  3. SQL सर्वर में उपयोगकर्ता के अस्तित्व के लिए आप कैसे परीक्षण करते हैं?

  4. पूर्ण-पाठ अनुक्रमण विकल्प को धूसर क्यों किया जाता है?

  5. SQL सर्वर में किसी लिंक किए गए सर्वर से सभी डेटाबेस की सूची बनाएं (T-SQL उदाहरण)