我有三张桌子 - 会员,付款,奖励超过3000条记录。 目前,成员表具有memberId作为主键,memberid是Payment和Award表的外键。注意memberid不是自动生成的字段。此表是在Access中创建的。 我的工作是迁移到Oracle并添加主键,将mem_id作为序列号添加到Member表中,并将mem_id作为外键添加到Payment和Award表中。
将列名称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;
到目前为止它运作良好,现在我的挑战是将外键添加到Payment表以及Award表 - 在付款表
中创建了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
需要帮助来解决这个问题。
答案 0 :(得分:1)
尝试使用以下
更新PAYMENT表update payment p set p.mem_id = (select mem_id from member where
memberid = p.memberid);