|
|
我明白了,我的结果
当其中只有一个表有主键的时候
删除没有主键的表记录
当两个都有主键的时候
删除表连接中非驱动表的那个表
比如通常的rule模式下from a,b : 就删除a中的
SQL> delete (select a.a aa,a.b ab,b.a from test b,test1 a where b.a = a.a ) where aa =1;
delete (select a.a aa,a.b ab,b.a from test b,test1 a where b.a = a.a ) where aa =1
*
ERROR 位于第 1 行:
ORA-01752: 不能从没有一个键值保存表的视图中删除
已用时间: 00: 00: 00.00
SQL> alter table test1 add primary key(a);
表已更改。
已用时间: 00: 00: 00.00
SQL> delete (select a.a aa,a.b ab,b.a from test b,test1 a where b.a = a.a ) where aa =1;
已删除 1 行。
已用时间: 00: 00: 00.00
SQL> select *from test1;
A B
---------- --------------------
1 1
3 3
2 2
已用时间: 00: 00: 00.00
SQL> select * from test;
A B C
---------- ---------- ----------
2 2 1
4 4 2
6 1 3
8 4 4
已用时间: 00: 00: 00.00
SQL> rollback;
回退已完成。
已用时间: 00: 00: 00.00
SQL> alter table test1 drop primary key ;
表已更改。
已用时间: 00: 00: 00.00
SQL> alter table test add primary key(a);
表已更改。
已用时间: 00: 00: 00.00
SQL> delete (select a.a aa,a.b ab,b.a from test b,test1 a where b.a = a.a ) where aa =1;
已删除 1 行。
已用时间: 00: 00: 00.00
SQL> select * from test1;
A B
---------- --------------------
3 3
2 2
已用时间: 00: 00: 00.00
SQL> select * from test;
A B C
---------- ---------- ----------
1 1 0
2 2 1
4 4 2
6 1 3
8 4 4
已用时间: 00: 00: 00.00
SQL> rollback;
回退已完成。
已用时间: 00: 00: 00.00
SQL> alter table test1 add primary key(a);
表已更改。
已用时间: 00: 00: 00.00
SQL> delete (select a.a aa,a.b ab,b.a from test b,test1 a where b.a = a.a ) where aa =1;
已删除 1 行。
已用时间: 00: 00: 00.00
SQL> select * from test;
A B C
---------- ---------- ----------
2 2 1
4 4 2
6 1 3
8 4 4
已用时间: 00: 00: 00.00
SQL> select * from test1;
A B
---------- --------------------
1 1
3 3
2 2
已用时间: 00: 00: 00.00
SQL> rollback;
回退已完成。
已用时间: 00: 00: 00.00
SQL> delete (select a.a aa,a.b ab,b.a from test1 b,test a where b.a = a.a ) where aa =1;
已删除 1 行。
已用时间: 00: 00: 00.00
SQL> select * from test1;
A B
---------- --------------------
3 3
2 2
已用时间: 00: 00: 00.00
SQL> select * from test;
A B C
---------- ---------- ----------
1 1 0
2 2 1
4 4 2
6 1 3
8 4 4
已用时间: 00: 00: 00.00
SQL> rollback;
回退已完成。
已用时间: 00: 00: 00.00
SQL> |
|