2017-07-17 82 views
0

我的問題與this one非常相似,但適用於自適應服務器企業。我使用BCP將數據加載到數據庫中。批量導入期間,不執行外鍵約束檢查。批量導入後檢查約束

導入數據後檢查外鍵約束的最佳方法是什麼?

回答

2

我不知道Sybase ASE中的任何命令類似於MSSQL的alter table/check check constraint

如何強制FK約束的檢查一些想法:

  • bcp到一個臨時表,然後通過從臨時表中選擇插入到目標表;這將產生一個錯誤,但不一定會告訴你哪個行FK檢查失敗(除非您選擇一次插入/選擇1行)

  • 用當前值更新FK列(s) (一個或多個); ASE不夠聰明,無法知道前/後值是相同的,所以它會運行FK檢查;再次,這將產生一個錯誤,但不會告訴你哪些行FK檢查失敗;如果它通過並更新一堆行(和相關索引),它也不是非常有效;是這樣的:

update child_table set fk_col = fk_col where ... for-the-child-rows-just-inserted ...

  • 考慮運行not exists查詢來查找失敗的FK檢查,像行:

select * from child c where not exists(select 1 from parent p where p.pk = c.fk) and ... for-the-child-rows-just-inserted ...

+0

謝謝你的提示!我真的不明白爲什麼沒有更好的支持。將使用選項3。 – Beginner