2012-03-01 44 views
0

我想看到像下面的“外键约束截断表”的规范。有谁知道它在哪里定义?Oracle的规范或SQL的? :用外键约束截断表

从反面来说,如果你有一个外键约束参照 你试图截断表,这是不行的 - 即使 参照表中没有任何数据!这是因为外键 检查是使用DDL而不是DML完成的。这可以通过 临时禁用对表的外键约束来解决。 http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands

回答

2

你的意思是在限制第四子弹上截断Oracle's truncate documentation的表款?

您不能截断启用的外键的父表 约束的父表。在截断 表之前,必须禁用约束。一个例外是,如果完整性约束是自引用的,则可以截断表。

+0

这就是它!但它没有明确提及“无数据”条件。如果你知道,请教我。 – zono 2012-03-01 23:17:46

+0

@yusaku - 它*不*表示'除非子表不包含任何数据',这是一个全面的声明,你永远无法做到这一点。它(强烈地,IMO)暗示它*确实意味着'即使没有数据'。正如orafaq链接所说,那是因为它是一个DDL语句。让它看看你正在截断的表中的数据,不用介意任何引用它的表,它将意味着它必须做DML,改变它的本质,并且它会失去一些效率优势 - 就像它纯粹的DDL一样根本不需要检索任何数据(数据字典本身之外)。 – 2012-03-02 09:04:29