微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我该如何编写才能使错误:关系“照片”不存在并且不会发生“用户”的相同错误

如何解决我该如何编写才能使错误:关系“照片”不存在并且不会发生“用户”的相同错误

我正在尝试制作这两个表,但是用户和照片表都有一个引用另一个表的外键,并且出现错误。我将如何更改此代码以确保没有错误

create table people (
    id              serial,family_names    text,given_names     text,displayed_names text,email_address   text,primary key (id)
);

create table users (
    userid              integer,website             text,date_registered     date,gender              GenderValue,birthday            date,password            text,portrait            integer,primary key (userid),foreign key (userid) references people(id),foreign key (portrait) references photos(photoid)
);

create table photos (
    photoid             serial,title               TitleValue,date_uploaded       date,date_taken          date,description         text,technical_details   text,safety_level        safetyLevel,visibility          visibilityLevel,owns                integer,primary key (photoid),foreign key (owns) references users(userid)
);

ER Diagram

解决方法

从表定义中删除“forward”引用,并在创建所有表后将其添加为 alter table 语句:

alter table users add constraint fk_users_photos
    foreign key (portrait) references photos(photoid);

事实上,表创建的一种风格是简单地创建所有没有外键引用的表,然后在表定义之后对所有表使用 alter table。这可以防止任何错误并允许循环引用。

Here 是一个 dbfiddle。请注意,您的代码具有自定义类型,我在小提琴中将其更改为基本类型。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。