Können sich CHECK-Einschränkungen wie sonst verhalten?

8

Ich habe eine Tabelle mit 4 Spalten (ID (PK, int, NOT NULL), Spalte1 (NULL), Spalte2 (NULL), Spalte3 (NULL))

Ich möchte eine CHECK-Einschränkung (Tabellenebene, denke ich?) hinzufügen, so dass:

%Vor%

und     Wenn col3 NOT NULL ist, dann muss col1 UND col2 NULL sein

d. col3 sollte null sein, wenn col1 und col2 nicht null sind oder umgekehrt

Ich bin allerdings sehr neu in SQL und SQL Server und bin mir nicht sicher, wie ich das tatsächlich implementieren soll oder ob es implementiert werden kann / sollte?

Ich denke vielleicht:

%Vor%

Aber ich bin nicht sicher, ob die Klammern verwendet werden können, um die Logik so zu gruppieren?

Wenn nicht, wie kann dies am besten umgesetzt werden?

    
Toby 09.08.2013, 12:11
quelle

3 Antworten

11

Absolut, Sie können das tun. Sehen Sie sich dies sqlfiddle an.

Sie müssen jedoch sicherstellen, dass Sie Ihre Logik richtig eingrenzen. Sie sollten nie ANDs und ORs im gleichen Bereich der Belichtungsreihen mischen. Also:

%Vor%

Muss werden:

%Vor%

Oder:

%Vor%

Abhängig von Ihrer Absicht.

    
PinnyM 09.08.2013, 12:17
quelle
3

Achte nur darauf, dass du keine Fehler mit Klammern machst.

%Vor%     
Nenad Zivkovic 09.08.2013 12:27
quelle
1

Ich würde sagen, erstellen Sie eine UDF wie unten

%Vor%

und fügen Sie dann folgende Prüfanweisung in Ihre Tabelle ein

%Vor%     
Dhaval 09.08.2013 12:34
quelle