8148: Mehr als eine %1!-Einschränkung auf Spaltenebene wurde für die '%2!'-Spalte
Fehlermeldung:
Meldung 8148, Ebene 16, Status 0, Zeile 1
Mehr als eine %1!-Einschränkung auf Spaltenebene wurde für die '%2!'-Spalte, '%3!'-Tabelle, angegeben.
Ebene:
16.
Beschreibung:
Diese Fehlermeldung taucht auf, wenn man versucht, in einem CREATE TABLE Statement mehr als eine Einschränkung für eine Spalte zu erstellen, für die bereits im selben Statement eine weitere Einschränkung der gleichen Art definiert wurde.
Auswirkungen:
Das SQL Statement kann zwar geparst werden, jedoch zur Laufzeit wird der Fehler ausgelöst.
Behebung:
Fehler der Ebene 16 sind Fehler, die vom Anwender hervorgerufen werden. Sie können und müssen vom Anwender korrigiert werden. Für jede Spalte kann es in einem CREATE TABLE Statement nur eine einzige Einschränkung pro Einschränkungsart geben.
Versionen:
Alle Versionen von SQL Server
Beispiel(e):
CREATE TABLE t
(
c1 INT DEFAULT 0
CONSTRAINT DF_1 DEFAULT 1
)
GO
DROP TABLE t
CREATE TABLE t
(
c1 INT
CONSTRAINT CK_1 CHECK(c1 > 0)
CONSTRAINT CK_2 CHECK(c1 < 0)
)
GO
DROP TABLE t
Anmerkungen:
Es ist unmöglich, mehr als 1 DEFAULT Einschränkung für eine Spalte zu erstellen. Egal, ob man es nach der Erstellung der Tabelle per ALTER TABLE versucht, oder bereits im CREATE TABLE Statement. Allerdings verursacht der Versuch, es zu einem späteren Zeitpunkt per ALTER TABLE zu erreichen, nicht diesen Fehler, sondern Fehler 1781.
Dagegen ist es sehr wohl möglich, mehr als eine CHECK Einschränkung pro Spalte zu definieren. Allerdings nicht direkt im CREATE TABLE Statement, sondern zu einem späteren Zeitpunkt per ALTER TABLE:
CREATE TABLE t
(
c1 INT
CONSTRAINT CK_1 CHECK(c1 > 0)
)
GO
ALTER TABLE t
ADD CONSTRAINT CK_2 CHECK(c1 < 0)
DROP TABLE t