Announcement

Collapse
No announcement yet.

neuer constraint will nicht funktionieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • neuer constraint will nicht funktionieren

    ich bin ein sql neuling und habe ein ganz simples aber für mich unlösbares problem. ich habe eine datenbank gerade in isql anwendung erstellt. dann habe ich eine neue tabelle angelegt:
    CREATE TABLE KUNDEN (NUMMER INTEGER NOT NULL,
    NAME1 VARCHAR(30) NOT NULL,
    NAME2 VARCHAR(30),
    ZUSATZ VARCHAR(30),
    STRASSE VARCHAR(30),
    LAND VARCHAR(3),
    PLZ VARCHAR(5),
    ORT VARCHAR(20),
    SUCHINDEX VARCHAR(30) NOT NULL,
    TELNR VARCHAR(20),
    FAXNR VARCHAR(20),
    ANSPRECHPARTNER VARCHAR(25),
    EMAIL VARCHAR(40),
    KUNDENNUMMER INTEGER NOT NULL,
    MEHRWERTSTEUERCODE INTEGER,
    USTIDCODE INTEGER,
    WAEHRUNG INTEGER,
    LIEFERNAME VARCHAR(30) default null,
    LIEFERSTRASSE VARCHAR(30) default null,
    LIEFERLAND VARCHAR(3) default null,
    LIEFERPLZ VARCHAR(5) default null,
    LIEFERORT VARCHAR(20) default null,
    UNIQUE (NUMMER),
    PRIMARY KEY (KUNDENNUMMER));

    das hat wunderbar funktioniert. wenn ich jetzt allerdings einen constraint hinzufügen will:

    ALTER TABLE kunden ADD CONSTRAINT conname UNIQUE (name1,name2,zusatz,strasse,land,plz,ort)

    liefert der computer den fehlercode 607 zurück.

  • #2
    Wenn du in ISQL eine Fehlermeldung bekommst solltest du auf den Knopf "Details" drücken. Dann wird eine Erläuterung für den Fehler angezeigt. In deinem Fall lautet diese:

    unsuccessful metadata update
    -Column: LAND not defined as NOT NULL - cannot be used in PRIMARY KEY/UNIQUE constraint definition

    Das Problem ist also, dass du einen eindeutigen Schlüssel anlegen möchtest, die Spalte "LAND" (und andere Spalten) aber nicht als "NOT NULL" definiert ist. Dies lässt Interbase nicht zu, du musst also alle Spalten eines eindeutigen Schlüssels als "NOT NULL" definieren.

    Allerdings frage ich mich, wofür du einen so komplizierten Schlüssel brauchst, falls du einen eindeutigen Schlüssel haben willst, wäre eine fortlaufende ID-Nummer sinnvoller, falls du sortieren möchtest geht das mit einer "ORDER BY"-Klausel beim "SELECT"

    Comment

    Working...
    X