第7行的错误:ORA-02438:列检查约束不能引用其他列

时间:2016-04-27 06:06:28

标签: mysql

我试图创建一个表,这是代码

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的初学者,有人可以帮助我解决这个问题吗? 谢谢

1 个答案:

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

我认为您没有必要尝试在检查约束中使用内部外键。