2017-02-12 4 views
0

Я пытаюсь определить новый домен «rating_int», который я смог бы использовать в таблице «Обзор». В любое время я пытаюсь выполнить этот запрос, он возвращает это сообщение:Создать ошибку домена

ОШИБКА: колонка «rating_int» не существует

********** Ошибки ********* *

оШИБКА: колонка «rating_int» не существует

SQL состояние: 42703

Я следовал точно такой же формат кода как postgresql example и я не знаю, почему мой код возвращает ошибку.

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 
    ); 

ответ

1

Вы используете value, а не название домена. Как это:

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

, Вам не нужно давать ограничение имя - ваша ошибка была rating_int вместо value. Так что это работает:

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

Однако, я думаю, что это хорошая идея дать имена ограничений.

Кроме того, вы можете захотеть сделать тип smallint или decimal(2), если вы хотите сэкономить на пространстве.

+0

Спасибо, мой запрос выполнен без проблем. Могу ли я спросить, почему я должен использовать 'значение', а не имя домена? – stargazer

+0

@stargazer. , , Вот как определяется синтаксис. –