其中表A的主键是表B的外键,表C独立,那么我写
execute immediate 'truncate table C’;
execute immediate 'truncate table B’;
execute immediate 'truncate table A’;
前两句没有问题,记录也清掉了,但执行第三句时出错,说表A的主键被其他表用作外键,而同样的语句用Delete from就没有问题。
大家有什么建议吗
6 个解决方案
#1
第三句执行时报:
ORA-02266: 表中的唯一/主关键字被启用的外部关键字引用
ORA-02266: 表中的唯一/主关键字被启用的外部关键字引用
#2
记得好象在语句后加上descade,
针对这一张表试一下吧。
针对这一张表试一下吧。
#3
我的解决办法就是:
1.删除外键
2.做truncate操作
3.建立外键
----------这样操作比用delete操作快。
1.删除外键
2.做truncate操作
3.建立外键
----------这样操作比用delete操作快。
#4
也可以用 disable , truncate , enable 。 见下例:
alter table PINCHANGE modify constraint PINCHANGE_FK_PIN disable;
alter table ADDRESS modify constraint ADDRESS_FK_PIN disable;
alter table SPECIALRECORD modify constraint SPECIALRECORD_FK_PIN disable;
alter table TRADE modify constraint TRADE_FK_PIN disable;
alter table EMPLOYMENT modify constraint EMPLOYMENT_FK_PIN disable;
alter table GUARANTEE modify constraint GUARANTEE_FK_PIN disable;
alter table ANNOUNCE modify constraint ANNOUNCE_FK_PIN disable;
truncate table PERSON ;
alter table PINCHANGE modify constraint PINCHANGE_FK_PIN enable;
alter table ADDRESS modify constraint ADDRESS_FK_PIN enable;
alter table SPECIALRECORD modify constraint SPECIALRECORD_FK_PIN enable;
alter table TRADE modify constraint TRADE_FK_PIN enable;
alter table EMPLOYMENT modify constraint EMPLOYMENT_FK_PIN enable;
alter table GUARANTEE modify constraint GUARANTEE_FK_PIN enable;
alter table ANNOUNCE modify constraint ANNOUNCE_FK_PIN enable;
alter table PINCHANGE modify constraint PINCHANGE_FK_PIN disable;
alter table ADDRESS modify constraint ADDRESS_FK_PIN disable;
alter table SPECIALRECORD modify constraint SPECIALRECORD_FK_PIN disable;
alter table TRADE modify constraint TRADE_FK_PIN disable;
alter table EMPLOYMENT modify constraint EMPLOYMENT_FK_PIN disable;
alter table GUARANTEE modify constraint GUARANTEE_FK_PIN disable;
alter table ANNOUNCE modify constraint ANNOUNCE_FK_PIN disable;
truncate table PERSON ;
alter table PINCHANGE modify constraint PINCHANGE_FK_PIN enable;
alter table ADDRESS modify constraint ADDRESS_FK_PIN enable;
alter table SPECIALRECORD modify constraint SPECIALRECORD_FK_PIN enable;
alter table TRADE modify constraint TRADE_FK_PIN enable;
alter table EMPLOYMENT modify constraint EMPLOYMENT_FK_PIN enable;
alter table GUARANTEE modify constraint GUARANTEE_FK_PIN enable;
alter table ANNOUNCE modify constraint ANNOUNCE_FK_PIN enable;
#5
楼上的方法很棒
我只奇怪:truncate受主外键约束,同样的语句用Delete from就没有问题。
??
我只奇怪:truncate受主外键约束,同样的语句用Delete from就没有问题。
??
#6
谢谢大家的意见,我的表有200多张,每张表都有很多主外键。我需要两个结论:
1。是否有主外键直接用truncate肯定不行?
2。如果用程序控制外键,是否有编程自动得到外键名称并控制它的enable和disable属性的办法。
最好给出例子。
1。是否有主外键直接用truncate肯定不行?
2。如果用程序控制外键,是否有编程自动得到外键名称并控制它的enable和disable属性的办法。
最好给出例子。
#1
第三句执行时报:
ORA-02266: 表中的唯一/主关键字被启用的外部关键字引用
ORA-02266: 表中的唯一/主关键字被启用的外部关键字引用
#2
记得好象在语句后加上descade,
针对这一张表试一下吧。
针对这一张表试一下吧。
#3
我的解决办法就是:
1.删除外键
2.做truncate操作
3.建立外键
----------这样操作比用delete操作快。
1.删除外键
2.做truncate操作
3.建立外键
----------这样操作比用delete操作快。
#4
也可以用 disable , truncate , enable 。 见下例:
alter table PINCHANGE modify constraint PINCHANGE_FK_PIN disable;
alter table ADDRESS modify constraint ADDRESS_FK_PIN disable;
alter table SPECIALRECORD modify constraint SPECIALRECORD_FK_PIN disable;
alter table TRADE modify constraint TRADE_FK_PIN disable;
alter table EMPLOYMENT modify constraint EMPLOYMENT_FK_PIN disable;
alter table GUARANTEE modify constraint GUARANTEE_FK_PIN disable;
alter table ANNOUNCE modify constraint ANNOUNCE_FK_PIN disable;
truncate table PERSON ;
alter table PINCHANGE modify constraint PINCHANGE_FK_PIN enable;
alter table ADDRESS modify constraint ADDRESS_FK_PIN enable;
alter table SPECIALRECORD modify constraint SPECIALRECORD_FK_PIN enable;
alter table TRADE modify constraint TRADE_FK_PIN enable;
alter table EMPLOYMENT modify constraint EMPLOYMENT_FK_PIN enable;
alter table GUARANTEE modify constraint GUARANTEE_FK_PIN enable;
alter table ANNOUNCE modify constraint ANNOUNCE_FK_PIN enable;
alter table PINCHANGE modify constraint PINCHANGE_FK_PIN disable;
alter table ADDRESS modify constraint ADDRESS_FK_PIN disable;
alter table SPECIALRECORD modify constraint SPECIALRECORD_FK_PIN disable;
alter table TRADE modify constraint TRADE_FK_PIN disable;
alter table EMPLOYMENT modify constraint EMPLOYMENT_FK_PIN disable;
alter table GUARANTEE modify constraint GUARANTEE_FK_PIN disable;
alter table ANNOUNCE modify constraint ANNOUNCE_FK_PIN disable;
truncate table PERSON ;
alter table PINCHANGE modify constraint PINCHANGE_FK_PIN enable;
alter table ADDRESS modify constraint ADDRESS_FK_PIN enable;
alter table SPECIALRECORD modify constraint SPECIALRECORD_FK_PIN enable;
alter table TRADE modify constraint TRADE_FK_PIN enable;
alter table EMPLOYMENT modify constraint EMPLOYMENT_FK_PIN enable;
alter table GUARANTEE modify constraint GUARANTEE_FK_PIN enable;
alter table ANNOUNCE modify constraint ANNOUNCE_FK_PIN enable;
#5
楼上的方法很棒
我只奇怪:truncate受主外键约束,同样的语句用Delete from就没有问题。
??
我只奇怪:truncate受主外键约束,同样的语句用Delete from就没有问题。
??
#6
谢谢大家的意见,我的表有200多张,每张表都有很多主外键。我需要两个结论:
1。是否有主外键直接用truncate肯定不行?
2。如果用程序控制外键,是否有编程自动得到外键名称并控制它的enable和disable属性的办法。
最好给出例子。
1。是否有主外键直接用truncate肯定不行?
2。如果用程序控制外键,是否有编程自动得到外键名称并控制它的enable和disable属性的办法。
最好给出例子。