Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Integritätsbedingungen mit CREATE TABLE

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von SQLer2014, 23 Januar 2014.

  1. SQLer2014

    SQLer2014 Neuer Benutzer

    Hallo,

    sehe ich das richtig, dass es keine Möglichkeit gibt, folgende Situation mit einer Integritätsbedingungen, die man im Rahmen des Create Table Befehls angegeben kann, zu berücksichtigen?

    Ich habe zwei Tabellen:
    Gebäudeart(Bezeichnung, ....)
    Gebäude(Nummer, Höhe, Gebäudeart.Bezeichnng, ...)

    Sachverhalt:
    Ich möchte, dass Gebäude nur eine Höhe von mehr als 200m haben dürfen, wenn die Bezeichnung "Hochhaus" entspricht.

    Ich habe folgendes geschrieben:
    HOEHE INTEGER CONSTRAINT PR_HOEHE CHECK ((HOEHE >= 200 and BEZEICHNUNG = 'Hochhaus') or (HOEHE < 200 and BEZEICHNUNG <> 'Hochhaus'))

    Was aber nicht funktioniert.

    In Hoffnung auf Hilfe,

    viele Grüße
     
    Zuletzt bearbeitet: 23 Januar 2014
  2. akretschmer

    akretschmer Datenbank-Guru

    Korrekt.

    MySQL akzeptiert zwar CHECK-Constraints, beachtet diese aber nicht. In PG geht es:

    Code:
    test=# create table haus (typ text, hoehe int, check(case when typ != 'hochhaus' then hoehe < 200 end));
    CREATE TABLE
    Time: 53,627 ms
    test=*# insert into haus values ('hochhaus', 500);
    INSERT 0 1
    Time: 0,378 ms
    test=*# insert into haus values ('hütte', 500);
    ERROR:  new row for relation "haus" violates check constraint "haus_check"
    DETAIL:  Failing row contains (hütte, 500).
    
     
    SQLer2014 gefällt das.
  3. akretschmer

    akretschmer Datenbank-Guru

    Und? Was willst nun machen?
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden