我错过了您如何创建f_t2
需要t1
在某一时刻添加的内容。因此,我添加并填充了该列f_t2
,并且它起作用了。
ALTER TABLE t1
ADD (f_t2 number);
update t1 set f_t2 = (select s_id from t2 where t2.title = t1.title);
运行以下产生了预期的结果。
drop table t1;
create table t1 (id number,name varchar2(100), title varchar2(100));
insert into t1 values (1, 'abc', 'X1');
insert into t1 values (2, 'xyz', 'X1');
insert into t1 values (3, 'qwe', 'X1');
insert into t1 values (4, 'asd', 'X2');
insert into t1 values (5, 'pqr', 'X2');
drop table t2;
create table t2 AS SELECT distinct (title) FROM t1;
ALTER TABLE t2
ADD (s_id number,column1 varchar2(10),column2 varchar2(20));
drop sequence s_seq;
create sequence s_seq
start with 1
increment by 1
nomaxvalue;
update t2 set s_id=s_seq.nextval;
alter table t2 add primary key (s_id);
ALTER TABLE t1
ADD (f_t2 number);
update t1 set f_t2 = (select s_id from t2 where t2.title = t1.title);
select * from t1;
select * from t2;
ALTER TABLE t1
add constraint fk_s_id
FOREIGN KEY (f_t2)
REFERENCES t2(s_id) on delete cascade;
delete from t2 where title='X2';
select * from t1;
select * from t2;
输出:
table T1 dropped.
table T1 created.
1 rows inserted.
1 rows inserted.
1 rows inserted.
1 rows inserted.
1 rows inserted.
table T2 dropped.
table T2 created.
table T2 altered.
sequence S_SEQ dropped.
sequence S_SEQ created.
2 rows updated.
table T2 altered.
table T1 altered.
5 rows updated.
ID NAME TITLE F_T2
---------- ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- ----------
1 abc X1 1
2 xyz X1 1
3 qwe X1 1
4 asd X2 2
5 pqr X2 2
TITLE S_ID COLUMN1 COLUMN2
---------------------------------------------------------------------------------------------------- ---------- ---------- --------------------
X1 1
X2 2
table T1 altered.
1 rows deleted. --- DELETE in T2 affects T1
-- THIS IS T1:
ID NAME TITLE F_T2
---------- ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- ----------
1 abc X1 1
2 xyz
X1 1
3 qwe X1 1
-- THIS IS T2:
TITLE S_ID COLUMN1 COLUMN2
---------------------------------------------------------------------------------------------------- ---------- ---------- --------------------
X1 1