问题描述
嗨,
我通过sql loader将数据加载到其他表 (Pk,Fk关系和无级联删除) 引用的表中。在使用 “replace into table” 语句后成功加载数据,在我尝试truncate,append,insert语句但未加载数据之前,抛出有关违反引用完整性的错误。然后我阅读了有关insert,append,Truncate和Replace的Oracle Docs,每个语句都有自己的功能。但是,他们解释了truncate和replace,因为truncate截断表并加载数据,但是replate删除表并加载数据。但是使用delete语句,我们也无法删除具有子记录的数据,所以我的问题是
这怎么可能与替换,为什么不与其他像截断,插入?
我希望我提供了足够的信息。
提前谢谢
我通过sql loader将数据加载到其他表 (Pk,Fk关系和无级联删除) 引用的表中。在使用 “replace into table” 语句后成功加载数据,在我尝试truncate,append,insert语句但未加载数据之前,抛出有关违反引用完整性的错误。然后我阅读了有关insert,append,Truncate和Replace的Oracle Docs,每个语句都有自己的功能。但是,他们解释了truncate和replace,因为truncate截断表并加载数据,但是replate删除表并加载数据。但是使用delete语句,我们也无法删除具有子记录的数据,所以我的问题是
这怎么可能与替换,为什么不与其他像截断,插入?
我希望我提供了足够的信息。
提前谢谢
专家解答
因为 'replace' 等同于删除,而 'truncate' 是截断。
因此,这并不是一个真正的SQL加载程序问题,而是这些语句如何在数据库中工作的一部分。
例如
所以删除成功了,因为没有子记录...现在让我们用截断重复。
不允许截断-您需要先禁用约束,然后再截断。(版本12c对此更好-您可以进行截断级联)。
因此,这并不是一个真正的SQL加载程序问题,而是这些语句如何在数据库中工作的一部分。
例如
SQL> create table t1 ( x int primary key ); Table created. SQL> create table t2 ( y int, x int references t1(x)); Table created. SQL> SQL> insert into t1 values (1); 1 row created. SQL> delete from t1; 1 row deleted.
所以删除成功了,因为没有子记录...现在让我们用截断重复。
SQL>
SQL> insert into t1 values (1);
1 row created.
SQL> truncate table t1;
truncate table t1
*
ERROR at line 1:
ORA-02266: unique/primary keys in table referenced by enabled foreign keys
不允许截断-您需要先禁用约束,然后再截断。(版本12c对此更好-您可以进行截断级联)。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




