2.4k Aufrufe
Gefragt in Datenbanken von mctommson Einsteiger_in (55 Punkte)
Hallo!

Ich möchte innerhalb einer Tabelle bei einer Spalte Test nur die Einträge A, B und C zulassen. Gibt es so eine Art Datentyp "Liste", in dem ich festlegen kann, welche Einträge möglich sind? Oder wo kann ich für eine Spalte 3 bestimmte Einträge vordefinieren?

Danke euch!
Lg,
Tommy!

4 Antworten

0 Punkte
Beantwortet von mctommson Einsteiger_in (55 Punkte)
Oder muss ich das dann Softwareseitig implementieren?
0 Punkte
Beantwortet von ralfh Mitglied (227 Punkte)
Hi,
sowas kann man über einen Trigger und ner Store Procedure realisieren.
Aber was machst Du, wenn andere Kürzel eingegeben werden, sollen die Felder leer bleiben, oder in A,B oder C gewandelt werden, Wenn ja, nach welchen Kritierien?
Gruß Ralf
0 Punkte
Beantwortet von mctommson Einsteiger_in (55 Punkte)
Hallo!

Naja, bei Access is es ja so, dass da nur diese 3 Möglichkeiten in einem Listenfeld zur Auswahl stehen. D.h.: eine andere Eingabe ist nicht möglich! Falls irgendwie doch eine andere Eingabe erfolgt, soll eine Fehlermeldung erscheinen. Da das Feld keine Null Werte zulassen soll, muss also eine der drei Möglichkeiten ausgewählt werden.

Da ich jetzt noch nicht sooo viel Ahnung von SQL Befehlen habe und das alles eigentlich über die Eingabemaske von SQL Server 2008 Express gemacht habe, würde ich gerne wissen, ob in diesem Fenster an der unteren Hälfte des Bildschirms (dort wo man auch Identifikationsspezifikationen macht) irgendwas eingestellt werden muss, oder ob das nur über SQL Befehle geht?

Lg
0 Punkte
Beantwortet von
Hallo,

für diesen Fall könntest du ein CHECK-Einschränkung verwenden.

Wenn du im Management-Studio im Tabellen-Design-Modus bist gibt es den in der Toolbar den Punkt Check-Einschränkungen verwalten.

Dort kannst du Bedingungen definieren, um Werte bei INSERT oder UPDATE zu prüfen.

Wenn du z.B. in der Spalte VALUE nur die Werte 'A', 'B' und 'C' zulassen willst kannst du das mit der folgenden Einschränkung erledigen.

([VLAUE]='A' OR [VALUE]='B' OR [VALUE]='C')
(Je nach Servereinstellung werden dann auch noch Kleinbuchstaben zugelassen).


Du kannst das ganze natürlich auch als Script schreiben und direkt in einem Abgrage-Editor-Fenster ausführen.

Dann sieht das in etwa so aus:

ALTER TABLE [dbo].[TABLE] WITH NOCHECK ADD CONSTRAINT [CK_CHECK_VALUE] CHECK (([VALUE]='A' OR [VALUE]='B' OR [VALUE]='C'))

wobei [dbo] das Schema [TABLE] die Tabelle und [VALUE] die Spalte darstellen.
[CK_CHECK_VALUE] ist der Name der Einschränkung.

LG
Andreas
...