oracle 有约束问题

yhxst69z  于 2023-04-29  发布在  Oracle
关注(0)|答案(1)|浏览(239)
SQL> Create Table Staff
  2  (StaffNo char(4) not null,
  3  FName char(15) not null,
  4  LName char(20) not null,
  5  Position char(10) not null,
  6  Sex char(1) check(value in('f','m')),
  7  Salary numeric(8,2),
  8  branchNO char(4) check(value in(select branchNo from branch)),
  9  Constraint StaffNopk primary key (StaffNo),
 10  constraint branchfk foreign key (branchNo) references branch (branchNo));

Sex char(1)check(value in('f ','m')),
*
第6行错误:
ORA-02438:列检查约束无法引用其他列
有人能帮帮我吗
我正在尝试创建一个表,遇到了一个问题,您可以在语句的

qvk1mo1f

qvk1mo1f1#

你的直接问题:Sex char(1) check(value in('f','m')),应该是Sex char(1) check(Sex in('f','m')),。在您当前的尝试中,oracle认为value是一个列名,并且禁止在check约束中使用其他列。
另外,您不需要检查branchNO:外键将自动处理此检查。

Create Table Staff
(StaffNo char(4) not null,
 FName char(15) not null,
 LName char(20) not null,
 Position char(10) not null,
 Sex char(1) check(Sex in('f','m')),
 Salary numeric(8,2),
 branchNO char(4) not null,
 Constraint StaffNopk primary key (StaffNo),
 Constraint branchfk foreign key (branchNo) references branch (branchNo)
);

演示here

相关问题