3

私の質問はこれに似ています

制約違反のために DELETE クエリが失敗するかどうかを確認したい。失敗させてエラーをキャッチするのは見苦しいと思うので、データベースレベルでこれを行いたいと思います。

別のオプションは、SELECTクエリを使用して「手動で」チェックして、制約があるかどうかを確認することですが、これはかなり面倒です。

これを行う「ネイティブ」な方法はありますか?

4

1 に答える 1

3

最も簡単で直接的な方法は、DELETEを実行し、エラーをトラップすることです。

他のテーブルに対してSELECTステートメントを実行すると、行が存在するかどうかを知ることができます(外部キー制約を意味します)。ただし、外部キー制約は、多くの種類の整合性制約の1つにすぎません。

また、一部の整合性制約がトリガーを使用して実装される可能性があることも考慮する必要があります(正当な理由、悪い理由、またはまったく理由がないため)。

于 2011-01-04T11:40:56.960 に答える