Mit einer case-Anweisung in einer check-Einschränkung

i ' V wurde das erlernen von SQL für die Letzte Woche, aber ich bin unsicher, wie man richtig fügen Sie eine case-Anweisung innerhalb einer check-Einschränkung. Kann jemand mir ein paar Hinweise geben?

Habe ich die folgende Klasse Tabelle:

CREATE TABLE Grade
(
    salary_grade    char(1) NOT NULL CHECK (salary_grade = UPPER(salary_grade)),
        CONSTRAINT ck_grade_scale CHECK(
        CASE 
            WHEN salary_grade = '[A-D]' 
                THEN salary_scale = 'S1'
            WHEN salary_grade = '[D-G]' 
                THEN salary_scale = 'S2'
        END)

        salary_scale    char(2) DEFAULT 'S1' NOT NULL,

        CONSTRAINT pk_grade PRIMARY KEY (salary_grade),
        CONSTRAINT ck_salary_grade CHECK (REGEXP_LIKE(salary_grade, '[A-G]', 'c')),
        --constraint must be either S1 or S2
        CONSTRAINT ck_salary_scale CHECK (salary_scale IN ('S1', 'S2'))
);

Ich soll prüfen, dass wenn der salary_grade ist zwischen A-D, dann die salary_scale muss 'S1' oder wenn die salary_grade ist zwischen E-G dann ist es 'S2'.

Habe ich versucht, dies zu erforschen und sich mit dem letzteren, aber doch es funktioniert nicht.. habe ich strukturiert der code korrekt?

  • Bekommst du irgendeine Fehlermeldung? Wenn dem so ist, aktualisieren Sie Ihre Frage, es kann Hilfe bei der Suche nach dem problem.
  • Sousa ich bin immer eine Rechte Klammer fehlt, wenn Sie versuchen zu fallen. Außerdem sagt die Tabelle nicht vorhanden ist
  • Ich bin wirklich neu in diesem, nur angefangen zu lernen, dass dies ein paar Wochen, so bitte Geduld mit mir
  • In der Regel, sollten Sie nicht verwenden CASE wo die Boolesche Logik ist erlaubt (z.B. WHERE Klauseln und check-Einschränkungen). Gebrauch ist, um Ihnen zu erlauben Boolesche Logik zu verwenden, wo es normalerweise nicht erlaubt (z.B. die Spaltenliste in SELECT Aussagen).
  • Sie haben bereits 3 gute Antworten. Sollte man Ihnen Kredit durch die Annahme der einen, die Ihren Bedürfnissen am besten passt.
  • Ich bin traurig, dass ich völlig vergaß, dies zu tun und ich Schätze all die Hilfe.
  • Danke Jungs - das ist eine große Lernkurve

InformationsquelleAutor user3414871 | 2015-01-26
Schreibe einen Kommentar