2012-03-01 63 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