1

我有三张表——会员、付款、奖励,上面有超过 3000 条记录。目前Member 表有memberId 作为主键,memberid 是Payment 和Award 表的外键。注意 memberid 不是自动生成的字段。这些表是在 Access 中创建的。我的工作是迁移到 Oracle 并添加主键,让我们说 mem_id 作为序列号到成员表,并将 mem_id 作为外键添加到付款和奖励表。

  • 我已经迁移了 Oracle 中的表。
  • 将列名 mem_id 添加到成员表中

    alter table member add mem_id number Unique;

  • 创建了一个序列

          create Sequence Mem_seq
          START WITH 1
          MAXVALUE 999999999
          MINVALUE 1
          NOCYCLE
          NOCACHE
          NOORDER;
    
  • 由于所有记录的 mem_id 都为空,因此我更新了该列

       Update member 
       Set mem_id =  mem_seq.nextval
       Where mem_id IS NULL;
    

到目前为止效果很好,现在我向付款表和奖励表添加外键的挑战 - 在付款表中创建了 mem_id 列

       alter table PAYMENT
        add mem_id number Unique;
  • 我的想法是更新mem_id付款表

  • 更新声明是

       update PAYMENT
       set PAYMENT.mem_id = MEMBER.mem_id
       where PAYMENT.memberid = MEMBER.memberid; 
    

我收到错误ORA-00904 member.memberid: invalid identifier 需要帮助来解决这个问题。

4

1 回答 1

1

尝试使用以下内容更新 PAYMENT 表

update payment p set p.mem_id  = (select mem_id from member where 
memberid = p.memberid);
于 2012-11-15T19:17:39.620 回答