2017-02-12 2 views
0

Ich versuche, eine neue Domäne "rating_int" zu definieren, die ich in der Tabelle "Review" verwenden könnte. Immer versuche ich, diese Abfrage auszuführen, es gibt diese Nachricht:Create Domain Error

ERROR: Spalte "rating_int" existiert nicht

********** Fehler ********* *

eRROR: Spalte "rating_int" existiert nicht

SQL-Status: 42703

ich genau die gleiche Code-Format als postgresql example gefolgt, und ich weiß nicht, warum mein Code einen Fehler zurückgibt.

CREATE DOMAIN rating_int AS INTEGER 
CHECK(rating_int > 0 AND rating_int <=10); 

CREATE TABLE Review 
(
    paper_id INTEGER, 
    rv_email VARCHAR(55)  NOT NULL, 
    reccomendation TEXT, 
    a_comments TEXT, 
    c_comments TEXT, 
    technical_merit rating_int, 
    readability rating_int, 
    orginality rating_int, 
    relevance rating_int, 
    PRIMARY KEY(paper_id, rv_email), 
    FOREIGN KEY(paper_id) REFERENCES Paper 
    ON DELETE RESTRICT ON UPDATE CASCADE, 
    FOREIGN KEY(rv_email) REFERENCES Reviewer 
    ON DELETE SET NULL ON UPDATE CASCADE 
    ); 

Antwort

1

Sie verwenden value, nicht den Namen der Domäne. Wie folgt aus:

CREATE DOMAIN rating_int AS INTEGER 
    CONSTRAINT chk_rating_int CHECK (value > 0 AND value <= 10); 

Sie nicht wirklich brauchen, um die Beschränkung einen Namen zu geben - Ihr Fehler rating_int war statt value. So funktioniert das:

CREATE DOMAIN rating_int AS INTEGER 
    CHECK (value > 0 AND value <= 10); 

Allerdings denke ich, es ist eine gute Idee, Constraints Namen zu geben.

Sie können auch den Typ smallint oder decimal(2) eingeben, wenn Sie Speicherplatz sparen möchten.

+0

Danke, meine Abfrage wurde ohne Probleme ausgeführt. Kann ich fragen, warum ich "Wert" anstelle des Namens der Domain verwenden soll? – stargazer

+0

@stargazer. . . So ist die Syntax definiert. –

Verwandte Themen