cx_Oracle:向 table 添加外键约束意味着它将填充所说的 table 或不?
cx_Oracle: Adding foreign key constraints to a table implies it will populate that said table or not?
table 'likes' 使用 table 的用户和图片的主键作为其(外键)属性。当我尝试执行下面的代码时,我没有得到类似的值(请看我已经为用户和图片添加了值 table 并且正在显示那些 table 值):
statement = """CREATE TABLE users(
user_id number(10) not null PRIMARY KEY,
username Varchar2(50),
user_email Varchar2(50),
no_of_liked_pictures number(10),
last_login Date
)"""
cur.execute(statement)
statement = """create table pictures(
picture_id number(10) not null primary key,
pic_path varchar2(200),
pic_caption varchar2(500),
no_of_likes number(10),
date_of_post date
)"""
cur.execute(statement)
statement = """create table likes(
picture_id number(10),
user_id number(10),
constraint fk_pic foreign key (picture_id) references pictures(picture_id),
constraint fk_user foreign key (user_id) references users(user_id)
)
"""
cur.execute(statement)
cur.execute("select * from likes")
print("likes Table:\n",cur.fetchall())
在 table 上创建外键约束仅意味着您只能从您引用的列中存在的值中放入数据。这并不意味着它会填充数据 - 它只是保持您放入 likes
table 中的数据的完整性,因此您不能拥有 user_id
或 [=12] =] 分别不存在 users
或 pictures
table.
Table likes
是不同的 table,除非您向其中添加一些数据,否则 SELECT
没有任何内容。
您需要先 INSERT
您的数据到 likes
table 才能看到它。这不是其他 table 的观点。
您创建的是多对多关系,因此您现在可以将用户与他们在 table likes
中的图片联系起来。此外,考虑在 likes
table.
中的 (picture_id, user_id)
列上创建 PRIMARY KEY
table 'likes' 使用 table 的用户和图片的主键作为其(外键)属性。当我尝试执行下面的代码时,我没有得到类似的值(请看我已经为用户和图片添加了值 table 并且正在显示那些 table 值):
statement = """CREATE TABLE users(
user_id number(10) not null PRIMARY KEY,
username Varchar2(50),
user_email Varchar2(50),
no_of_liked_pictures number(10),
last_login Date
)"""
cur.execute(statement)
statement = """create table pictures(
picture_id number(10) not null primary key,
pic_path varchar2(200),
pic_caption varchar2(500),
no_of_likes number(10),
date_of_post date
)"""
cur.execute(statement)
statement = """create table likes(
picture_id number(10),
user_id number(10),
constraint fk_pic foreign key (picture_id) references pictures(picture_id),
constraint fk_user foreign key (user_id) references users(user_id)
)
"""
cur.execute(statement)
cur.execute("select * from likes")
print("likes Table:\n",cur.fetchall())
在 table 上创建外键约束仅意味着您只能从您引用的列中存在的值中放入数据。这并不意味着它会填充数据 - 它只是保持您放入 likes
table 中的数据的完整性,因此您不能拥有 user_id
或 [=12] =] 分别不存在 users
或 pictures
table.
Table likes
是不同的 table,除非您向其中添加一些数据,否则 SELECT
没有任何内容。
您需要先 INSERT
您的数据到 likes
table 才能看到它。这不是其他 table 的观点。
您创建的是多对多关系,因此您现在可以将用户与他们在 table likes
中的图片联系起来。此外,考虑在 likes
table.
(picture_id, user_id)
列上创建 PRIMARY KEY