1

メンバー、支払い、賞の 3 つのテーブルがあり、3000 以上のレコードがあります。現在、Member テーブルは主キーとして memberId を持ち、memberid は Payment テーブルと Award テーブルの外部キーです。memberid は自動生成されたフィールドではないことに注意してください。このテーブルは Access で作成されました。私の仕事は、Oracle に移行し、Mem_id というプライマリ キーを Member テーブルにシーケンス番号として追加し、mem_id を外部キーとして Payment テーブルと Award テーブルに追加することです。

  • 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 はすべてのレコードで null であるため、列を更新します

       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 に答える