我有两个表学生和学生--学生的用户名是表中唯一的键,它被引用为‘学生概况’表的外键。
表的DDL为
CREATE TABLE students (
id NUMBER,
username VARCHAR2(30),
password VARCHAR2(30),
firstname VARCHAR2(30),
lastname VARCHAR2(40),
email VARCHAR2(300),
dob VARCHAR2(20),
alt_email VARCHAR2(300),
street_address VARCHAR2(50),
address_2 VARCHAR2(50),
city VARCHAR2(30),
state VARCHAR2(30),
zip VARCHAR2(10),
country VARCHAR2(60),
telephone VARCHAR2(10),
CONSTRAINT student_id_pk PRIMARY KEY (id),
CONSTRAINT student_username_uk UNIQUE (username)
);
CREATE TABLE studentsprofilepic (
id NUMBER,
photo_id NUMBER,
photo BLOB,
PRIMARY KEY (photo_id),
FOREIGN KEY (username) REFERENCES students (username)
);发布于 2015-02-15 15:40:50
YES,外键列与通常在另一个表中的primary key 或 unique key列(引用键)建立直接关系:
CREATE TABLE BOOK(
BNAME VARCHAR2(10)NOT NULL UNIQUE,
BTYPE VARCHAR2(10));
CREATE TABLE BOOKS_AUTH(
A_ID INT NOT NULL,
BNAME_REF VARCHAR2(10) NOT NULL,
FOREIGN KEY (BNAME_REF) REFERENCES BOOK (BNAME));发布于 2015-02-15 15:42:43
是的,为什么不呢。可以在UNIQUE constraint中引用FOREIGN KEY。
您可以有一个主键和一个唯一的键,并且您希望验证这两个键。
发布于 2015-02-15 17:59:38
是的,您可以引用受主键约束或唯一约束控制的列(或列)。
您的表"studentsprofilepic“的问题是您的外键试图使用列”studentsprofilepic“,”username“,但该列不存在。
create table studentsprofilepic(
id number,
photo_id number,
photo blob,
-- Add the "username" column.
username varchar2(30) not null,
primary key (photo_id),
foreign key (username) references students (username)
);还有,问问自己“学生简介史诗”有什么意义。“id”?这不是主钥匙。这不是外键。除了让你说:“嘿,我的桌子上有一个名为‘id’的栏目,这似乎没有任何用处!”这是个值得怀疑的特征。
考虑添加更多的not null约束。
https://stackoverflow.com/questions/28527630
复制相似问题