to daydayupliq(强强) 它消耗的时间是在tabAA,tabAB上寻找 ZtCode='001'的check时间, 即使已经删除了check时间还是存在的(就是确认是否已经删除的过程)
建议你建立外键时设参数on delete cascade 这样你删除tabA后会级联删除tabAA,tabAB的数据 这样会更快点么??? 发现一个tabA的主键,然后就删除它? 另外普通外键还有什么建法呢?学习!!楼主的这个问题会不会是这个错误呢? ERROR at line 1: ORA-02266: 表中的唯一/主键被启用的外部关键字引用
楼主不好意思,呵呵,我对外键这个概念的确比较糊涂~ 1、如果建立普通外键,那么删除父表,对子表应该没有什么影响; 2、on delete cascade,应该会级联删除子表中的记录; 3、我用on delete cascade时,遇到了可以delte 但不能truncate的错误: SQL> insert into b select * from dept;4 rows created.SQL> insert into a select * from emp;14 rows created.SQL> commit;Commit complete.SQL> alter table a add constraint pk_a primary key (empno);Table altered. SQL> alter table b add constraint pk_b primary key (deptno);Table altered. SQL> alter table a add constraint fk_a foreign key (deptno) references dept(d ptno) (on delete cascade);Table altered.SQL> delete from b where deptno=10;1 row deleted.SQL> truncat table b; SP2-0734: unknown command beginning "truncat ta..." - rest of line ignored. SQL> truncate table b; truncate table b * ERROR at line 1: ORA-02266: 表中的唯一/主键被启用的外部关键字引用
建议你建立外键时设参数on delete cascade
这样你删除tabA后会级联删除tabAA,tabAB的数据
它消耗的时间是在tabAA,tabAB上寻找 ZtCode='001'的check时间,
即使已经删除了check时间还是存在的(就是确认是否已经删除的过程)
这样你删除tabA后会级联删除tabAA,tabAB的数据
这样会更快点么??? 发现一个tabA的主键,然后就删除它?
另外普通外键还有什么建法呢?学习!!楼主的这个问题会不会是这个错误呢?
ERROR at line 1:
ORA-02266: 表中的唯一/主键被启用的外部关键字引用
1、如果建立普通外键,那么删除父表,对子表应该没有什么影响;
2、on delete cascade,应该会级联删除子表中的记录;
3、我用on delete cascade时,遇到了可以delte 但不能truncate的错误:
SQL> insert into b select * from dept;4 rows created.SQL> insert into a select * from emp;14 rows created.SQL> commit;Commit complete.SQL> alter table a add constraint pk_a primary key (empno);Table altered.
SQL> alter table b add constraint pk_b primary key (deptno);Table altered.
SQL> alter table a add constraint fk_a foreign key (deptno) references dept(d
ptno) (on delete cascade);Table altered.SQL> delete from b where deptno=10;1 row deleted.SQL> truncat table b;
SP2-0734: unknown command beginning "truncat ta..." - rest of line ignored.
SQL> truncate table b;
truncate table b
*
ERROR at line 1:
ORA-02266: 表中的唯一/主键被启用的外部关键字引用
普通外键,从表有主表相关记录,主表记录是无法删除的
删除父表,会用主表的主键去查询从表的外键
truncate 对普通外键也是一样的,因为它是ddl不是DMLto commit
ft,你外键上没有建索引?
你建立外键后,删除父表,用主表的主键去查询从表的外键时就是一个索引JOIN索引快多了。偶觉得,外键者,鸡肋也 :)
普通外键是不是不加(on delte **),这个没有实验出来~