如何解决我该如何编写才能使错误:关系“照片”不存在并且不会发生“用户”的相同错误
我正在尝试制作这两个表,但是用户和照片表都有一个引用另一个表的外键,并且出现错误。我将如何更改此代码以确保没有错误。
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)
);
解决方法
从表定义中删除“forward”引用,并在创建所有表后将其添加为 alter table
语句:
alter table users add constraint fk_users_photos
foreign key (portrait) references photos(photoid);
事实上,表创建的一种风格是简单地创建所有没有外键引用的表,然后在表定义之后对所有表使用 alter table
。这可以防止任何错误并允许循环引用。
Here 是一个 dbfiddle。请注意,您的代码具有自定义类型,我在小提琴中将其更改为基本类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。