我试图创建一个表,这是代码
CREATE TABLE Funtom_timesheet
(
timesheet_ID number(3) CONSTRAINT Fun_tmsheet_PK PRIMARY KEY,
Timesheet_emp number(3) NOT NULL REFERENCES funtom_employee,
Timesheet_hours number(2),
Timesheet_OT number(2) default 0,
Timesheet_approved number(3) CONSTRAINT chk_tmsht_apprvd CHECK(timesheet_approved <> timesheet_emp) REFERENCES funtom_employee(emp_id)
);
并且要求说timesheet_approved不能与
具有相同的价值timesheet_employee但它在第7行显示错误ERROR:ORA-02438: 列检查约束不能引用其他列
我仍然是SQL的初学者,有人可以帮助我解决这个问题吗? 谢谢
答案 0 :(得分:0)
我今天才遇到这个问题,这不是最明显的错误消息。
我使用的解决方案是将检查约束放在单独的ALTER TABLE ADD CONSTRAINT
子句中。
对于您的桌子,它看起来像这样:
CREATE TABLE Funtom_timesheet
(
timesheet_ID number(3) NOT NULL PRIMARY KEY,
Timesheet_emp number(3) NOT NULL REFERENCES funtom_employee,
Timesheet_hours number(2),
Timesheet_OT number(2) default 0,
Timesheet_approved number(3)
);
ALTER TABLE Funtom_timesheet
ADD CONSTRAINT chk_tmsht_apprvd CHECK(timesheet_approved <> timesheet_emp) ;
我认为您没有必要尝试在检查约束中使用内部外键。