Create Table mit Check

Asura

Benutzer
Beiträge
8
Guten Tag,
ich muss eine Tabelle erstellen. Zwei Attribute haben hier besondere Hinweise.
Die Niederlassungsnummer sind nur Werte zwischen 1-9999 erlaubt.
Und die Postleitzahl darf an jeder Stelle nur die Ziffern 0,9 haben.
Die Dateitypen sind hierbei vorgeschrieben und müssen eingehalten werden.

Ich habe hier ein Versuch, dieser funktioniert leider nicht.

Code:
CREATE TABLE IF NOT EXISTS `niederlassung` (

  `nnr`     int(4)                   COMMENT 'Niederlassungsnummer'   CHECK (`nnr` BETWEEN 1 AND 9999),
  `name`    varchar(10)  NOT NULL COMMENT 'Name der Niederlassung'                                  ,
  `plz`     varchar(5)               COMMENT 'PLZ der Niederlassung'  CHECK (ISNUMERIC(`plz`)==1),
  `ort`     varchar(12)  NOT NULL COMMENT 'Ort der Niederlassung',
  `adresse` varchar(25)  NOT NULL COMMENT 'Adresse der Niederlassung'

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Ich würde mich freuen, wenn Sie mir helfen könnten.
Ich benutze hier für phpmyadmin.

MfG
Asura
 
Werbung:
MySQL akzeptiert die Syntax von Check-Constraints, erzwingt diese aber nicht. Wenn Du das willst, so nutze eine bessere DB. Meine Empfehlung des Tages: PostgreSQL.
 
Ist diese Syntax zumindest korrekt, auch wenn die DB diese nicht erzwingt?
Geht mir hierbei vielmehr um die Korrektheit, als um die komplette Funktionsweise in meiner DB.
 
Werbung:
Die Syntax sieht auch richtig aus ich weiß allerdings nicht ob die für COMMENT richtig ist das nutze ich nicht. Du kannst das ganze auch nachträglich per ALTER TABLE xy ADD machen, dann wird dein Constraint gesondert akzeptiert.

Was die Durchsetzung des CONSTRAINTs angeht hat aktretschmer natürlich recht, wenn man das praktisch anwenden will muss man es per Trigger lösen. CHECK constraint in MySQL is not working
 
Zurück
Oben