2013-10-03 7 views
6

Angenommen, eine Tabelle namensZwei Spalten können nicht zur gleichen Zeit in SQL

Mitarbeiter

ID number, name varchar(24 char), address varchar2(100 char), alternateAddress(100 char), sex varchar2(10 char) 

Jetzt will ich setzen Einschränkung, so dass beide Adresse und Alternate kann nicht null dh möglich null sein Fälle sind:

  • Adresse ist null und Alternate ist nicht null
  • Alternate ist null ein nd-Adresse ist nicht null
  • Alternate nicht null ist und die Adresse ist nicht null

aber nicht passieren kann, dass jeder Datensatz in Tabelle Mitarbeiter mit Alternate eingefügt und adressieren beide null

+1

Bitte geben Sie das RDBMS an, wenn Sie solche Fragen wie z. MySQL, SQL-Server, Oracle, Postgres usw. – ChrisProsser

Antwort

2

Erstellen Sie Ihre Einschränkung wie folgt aus:

(address is null and alternateAddress is not null) or 
(alternateAddress is null and address is not null) or 
(alternateAddress is not null and address is not null) 
6

erstellen Sie eine Einschränkung auf den Tisch wie folgt aus:

ALTER TABLE [dbo].[Employee] WITH CHECK ADD CONSTRAINT [CK_OneAddress] CHECK ((NOT [address] IS NULL) OR (NOT [alternateAddress] IS NULL)) 
GO 

ALTER TABLE [dbo].[Employee] CHECK CONSTRAINT [CK_OneAddress] 
GO 
+0

Ich verwendete unten sql Skript, das ähnlich ist, was Sie vorgeschlagen haben, und es funktioniert tadellos gut ALTER TABLE Angestellter ADD CONSTRAINT CK_OneAddress CHECK (NICHT ((alternateAddress IS NULL) UND (Adresse IS NULL))); –

+0

Kein Problem, in Bezug auf boolesche Algebra entspricht dein Skript meinem Vorschlag. Würdest du bitte meine Antwort als akzeptiert markieren? Vielen Dank! –

Verwandte Themen