我正在尝试定义一个新域名" 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
);
答案 0 :(得分: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)
。