加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

最初推迟在postgresql中推迟

发布时间:2020-12-13 16:01:04 所属栏目:百科 来源:网络整理
导读:我在2个表上有一个循环外键,所以我使用deferrable最初推迟如下: uni=# create table vorlesungen (vnr integer primary key,gelesenvon integer);NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "vorlesungen_pkey" for table "vorlesunge
我在2个表上有一个循环外键,所以我使用deferrable最初推迟如下:

uni=# create table vorlesungen (vnr integer primary key,gelesenvon integer);
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "vorlesungen_pkey" for table "vorlesungen"
CREATE TABLE
uni=# create table professoren (pnr integer primary key,lieblingsvo integer);
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "professoren_pkey" for table "professoren"
CREATE TABLE
uni=# alter table professoren add constraint vfk foreign key (lieblingsvo) references vorlesungen (vnr) deferrable initially deferred;
ALTER TABLE
uni=# alter table vorlesungen add constraint pfk foreign key (gelesenvon) references professoren (pnr) deferrable initially deferred;
ALTER TABLE

到现在为止还挺好.
但现在当我想插入表格时,我得到了外键违规,尽管我指定了可延迟的最终延期:

uni=# insert into vorlesungen values (1,1);
ERROR:  insert or update on table "vorlesungen" violates foreign key constraint "pfk"
DETAIL:  Key (gelesenvon)=(1) is not present in table "professoren".

uni=# insert into professoren values (1,1);
ERROR:  insert or update on table "professoren" violates foreign key constraint "vfk"
DETAIL:  Key (lieblingsvo)=(1) is not present in table "vorlesungen".

有什么问题?

解决方法

您是否明确地在之前开立交易? INSERT语句中?如果不使用BEGIN,则每个插入都是一个独立的事务,因此在每个命令的末尾强制执行外键.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读