1
A
回答
2
要生成一個腳本,輪流刪除所有外鍵,請在任何firebird> = 2.0中使用以下腳本(也許它適用於pre 2.0,但不記得數據字典是否在涉及的系統表中發生了更改):
--generate a script which drops all foreign keys
--by jachguate http://jachguate.wordpress.com
-- http://stackoverflow.com/users/255257/jachguate
select 'alter table '||c.rdb$relation_name||' drop constraint '||c.rdb$constraint_name||';' script_lines
from rdb$relation_constraints c
where c.rdb$constraint_type = 'FOREIGN KEY';
編輯
要生成一個腳本來重新創建所有的外鍵,這個腳本會做的伎倆(對於火鳥> = 2.0)。記得在實際刪除外鍵之前運行它。
select 'alter table '||trim(c.rdb$relation_name)
||' add constraint '||trim(c.rdb$constraint_name)
||' foreign key ('
||(select list(trim(imast.rdb$field_name)) from rdb$index_segments imast where rdb$index_name = c.rdb$index_name)
||') references '||trim(uqc.rdb$relation_name)
||' ('
||(select list(trim(idet.rdb$field_name)) from rdb$index_segments idet where rdb$index_name = uqc.rdb$index_name)
||');'
from rdb$relation_constraints c
inner join rdb$ref_constraints rc
on rc.rdb$constraint_name = c.rdb$constraint_name
inner join rdb$relation_constraints uqc
on uqc.rdb$constraint_name = rc.rdb$const_name_uq;
此致敬禮。
相關問題
- 1. 丟棄所有的約束
- 2. 禁用與丟棄約束
- 3. 丟棄約束拋出錯誤
- 4. 約束名稱未知時的丟棄檢查約束
- 5. 添加CHECK約束在SQL Server:添加約束VS添加復
- 6. 添加約束SDCAlertView
- 7. Java - 添加約束
- 8. FireBird:結合上部和主鍵約束
- 9. 如何更改Firebird上的CHECK約束?
- 10. 具有未知名稱的PostgreSQL丟棄約束
- 11. Neo4j丟棄約束條件(如果存在的話)
- 12. 動態選定表上的T-SQL丟棄約束
- 13. Mysql約束無法添加
- 14. 添加外鍵約束
- 15. 添加約束關聯
- 16. 添加外鍵約束
- 17. Postgres添加唯一約束
- 18. 添加約束複製列
- 19. 添加唯一約束列
- 20. 添加約束導航欄
- 21. 檢查DataRow約束添加
- 22. MYSQL添加外鍵約束
- 23. 添加外鍵約束
- 24. 添加外鍵約束
- 25. 添加約束條件
- 26. 向ScrollView添加約束
- 27. 添加約束在PL/SQL
- 28. 添加多個約束
- 29. XCode添加重複約束?
- 30. 丟棄和添加鏈接服務器
添加約束意味着添加那些被刪除的約束。 – user490079 2010-11-01 04:18:24
我的答案已更新爲包含重新創建外鍵的腳本。 (_這是丟棄_) – jachguate 2010-11-02 23:57:24