我想做什么?
我正在尝试创建两个表,同时我尝试使用外键和主键将它们链接在一起。但是,我成功创建了我的父表(带主键的Student),但无法创建子表(使用外键的Attendence)。
有什么问题?
创建Attendence表时出现以下错误:
第5行的错误:ORA-01748:此处仅允许使用简单的列名称
我的代码:
学生表:
create table Student (
ST_ROLLNO NUMBER(6) constraint s_pk primary key,
ST_NAME VARCHAR(30) not null,
ST_ADDRESS varchar(35) not null
);
Attendence表:
create table Attendence (
ST_ROLLNO NUMBER(6),
ST_DATE VARCHAR(30) not null,
ST_PRESENT_ABSENT varchar(1) not null,
constraint f_pk Attendence.ST_ROLLNO foreign key references Student(ST_ROLLNO)
);
答案 0 :(得分:4)
你的foreign key constraint syntax错了;它应该是:
constraint f_pk foreign key (ST_ROLLNO) references Student(ST_ROLLNO)
你在FK列名前面加上表名,这本身就是错的,但也把它放错了。
create table Student (
ST_ROLLNO NUMBER(6) constraint s_pk primary key,
ST_NAME VARCHAR(30) not null,
ST_ADDRESS varchar(35) not null
);
Table STUDENT created.
create table Attendence (
ST_ROLLNO NUMBER(6),
ST_DATE VARCHAR(30) not null,
ST_PRESENT_ABSENT varchar(1) not null,
constraint f_pk foreign key (ST_ROLLNO) references Student(ST_ROLLNO)
);
Table ATTENDENCE created.
答案 1 :(得分:3)
根据oracle文档,
ORA-01748这里只允许使用简单的列名
以下是导致此错误的原因:
此SQL语句不允许使用限定列名,例如 username.table.column或table.column。
您可以采取的措施来解决此问题:删除资格 从列中重试该操作。
在您的情况下,您在定义约束时尝试引用表名 -
if(response.body() != null) {
... your code...
} else {
...your error handling code...
}
- 错误。
它必须包含一个没有表名或模式名称的简单名称。