我正在尝试定义一个新的域“ rating_int”,可以在表“ Review”中使用。每当我尝试执行此查询时,它都会返回以下消息:
错误:列“ rating_int”不存在
********** 错误 **********
错误:列“ rating_int”不存在
SQL状态:42703
我遵循与postgresql示例完全相同的代码格式,但我不知道为什么我的代码返回错误。
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
);
您使用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)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句