当前位置: 首页 > 知识库问答 >
问题:

Postgresql-将外键更改为另一列

西门胜涝
2023-03-14

我有两张桌子:

create table test1 (
oldPrimaryKey varchar(100) primary key, 
someText varchar(100)
)

create table test2 (
someText varchar(100),
 oldPrimaryKey varchar(100) references test1(oldPrimaryKey)
)
    null
    null
    null
    null
CREATE TABLE test1
(
  oldprimarykey character varying(100) NOT NULL,
  sometext character varying(100),
  newprimarykey bigint NOT NULL,
  CONSTRAINT keyname PRIMARY KEY (newprimarykey)
)

CREATE TABLE test2
(
  sometext character varying(100),
  oldprimarykey character varying(100),
  CONSTRAINT test2_oldprimarykey_fkey FOREIGN KEY (oldprimarykey)
      REFERENCES test1 (oldprimarykey) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)

我不知道现在该做什么(一些脚本?)。我需要将表Test2OldPrimaryKey中的值更改为表Test1NewPrimaryKey中的相应值。

如果太混乱,我会试着举一个正常数据的例子:

表1中的行(oldprimarykey、sometext、newprimarykey):

    null
    null

共有1个答案

韩寒
2023-03-14

这应该可以做到:

update test2
  set newprimarykey = t1.newprimarykey
from test1 t1
where t1.oldprimarykey = test2.oldprimarykey;

SQLFiddle示例:http://SQLFiddle.com/#!15/e558a/1

 类似资料:
  • 所以我有一个表,它用一个昵称作为外键,用一个id作为主键: 到目前为止,一切都很好。然而,每当我试图从发布中获取主键时,它告诉我:“没有唯一的约束来匹配引用表“信息”的给定键。 但是,如果我将表中的信息信息ID更改为唯一,错误就会消失。这是正确的做事方式吗? 提前感谢大家!

  • 问题内容: 我正在尝试使我的@OneToMany和@ManyToOne关系正确。 第1类: 第2类: 当我加载或保存新记录时,这种关系似乎运行良好: 但是,当我尝试更新该记录时,它将尝试将IdeaProfileId设置为null: 当我调试时,我可以看到IdeaProfileId确实在音高对象上设置了… 仅供参考,我不是直接更新从数据库加载的原始对象。这些域映射到UI更新的Model类。因此,在保

  • 我的PostgreSQL数据库中有表,有两列:和。是主键,只是另一个具有唯一约束的整数列。 还有其他按主键引用用户的表。 下面是表说明: 以下是说明: 如何将PostgreSQL表中的主键从列替换为列,并保持数据完整性?

  • 问题内容: 我正在尝试使我的@OneToMany和@ManyToOne关系正确。 第1类: 第2类: 当我加载或保存新记录时,这种关系似乎运行良好: 但是,当我尝试更新该记录时,它将尝试将IdeaProfileId设置为null: 当我调试时,我可以看到IdeaProfileId确实在音高对象上设置了… 仅供参考,我不是直接更新从数据库加载的原始对象。这些域映射到UI更新的Model类。因此,在保

  • 我有一个项目,在该项目中,我使用User.php模型文件中的以下命令将用户模型主键从“id”更改为“MemberX”: 受保护的$primaryKey='MemberID' 但是我的护照访问令牌表仍然使用“id”。我想要"MemberX" 身份证件 用户id: 客户端\u id名称作用域已撤销已创建\u在更新\u在过期\u在

  • 我有2个表,你会在下面的posgresql代码中看到。第一个表格学生有2列,一列student_name,另一列student_id主键。在我的第二张测试表中,它有4列,subject_id,subject_name,然后是highestStudent_id中分数最高的学生。我试图让highestStudent_id参考我学生表中的student_id。这是我下面的代码,我不确定语法是否正确: 语