2010-10-29 115 views
3

我的問題是有點類似於this one檢查完整性約束違反SQL之前刪除

我要檢查,如果刪除查詢將因違反約束而失敗。我想在數據庫級別上這樣做,因爲我認爲讓它失敗並捕獲錯誤是很難的。

另一個選擇是「手動」使用SELECT查詢來檢查它是否存在約束,但這是非常繁瑣的,恕我直言。

有沒有「本土」的方式來做到這一點?

回答

3

最簡單和最直接的方法是執行DELETE並捕獲錯誤。

如果您針對其他表運行SELECT語句,您可能會知道行是否存在(意味着外鍵約束)。但是外鍵約束只是多種完整性約束中的一種。

你也必須考慮一些完整性約束可能與觸發器(出於充分的理由,不好的理由或根本沒有理由)實現。