我有两名学生和学生 学生的'用户名'是表格的唯一键 它被引用为'studentsprofilepic'表的外键
表的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)
);
答案 0 :(得分:1)
是,外键列通常在另一个表中与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));
SQLFIDDLE DEMO
答案 1 :(得分:1)
是的,为什么不呢。可以在UNIQUE constraint
中引用FOREIGN KEY
。
您可以拥有主键和唯一键,并且您希望同时验证它们。
答案 2 :(得分:1)
是的,您可以引用由主键约束或唯一约束支配的列(或列)。
你的桌子的问题" studentsprofilepic"是你的外键试图使用列" studentsprofilepic"。"用户名",但该列不存在。
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)
);
另外,问问自己"" studentsprofilepic"。" id"?"它不是主键。它不是外键。除了让你说出来之外,它似乎没有提供任何目的,嘿,我的表格中有一个名为“id'!"”的列。这是一个值得怀疑的功能。
考虑添加更多not null
个约束。