ビューでの PostgreSQL 列変更の緩和
PostgreSQL では、ビュー内で使用される列が変更されるたびにビューの再作成を要求することで、データの整合性を確保します。ただし、ビューに影響を与えずに列を調整するだけの場合、これは面倒な場合があります。
永続的な解決策: 無制限のデータ型を使用する
この問題を完全に回避するには、データを使用します。 text や varchar /character などの型は、長さ指定子なしで変化します。これらのタイプでは、無制限のデータ ストレージが可能になり、ビューの再作成を必要とする長さの変更が不要になります。
CHECK 制約による最大長の強制
最大長の強制が必要な場合は、 CHECK 制約の使用を検討してください:
ALTER TABLE monkey ADD CONSTRAINT monkey_name_len CHECK (length(name) < 101);
この制約は、独立して変更または削除できます。ビューに影響を与えたり、基になるテーブルで不必要なデータ変更を強制したりします。
ビュー実装の影響
一般的な考えに反して、PostgreSQL のビューは単なるエイリアスではなく、次のような特殊なテーブルです。コンテンツを定義するルール。 ON SELECT ステートメントによって適用されるこれらのルールにより、基になるオブジェクトへの変更は必ず依存ビューに反映される必要があります。
ALTER VIEW の制限
ALTER VIEW では、以下のことが可能です。権限やコメントなどのビューの補助属性のみを変更します。基礎となるクエリを変更するには、CREATE OR REPLACE VIEW を使用します。ただし、この方法は、結果の列のデータ型を変更する場合には適していません。
ビューの削除と再作成
このような場合、推奨されるアプローチは、既存のビューを DROP することです。新しいものを作成します。これにより、基礎となるデータは保持されますが、ビューに関連付けられたカスタム属性はすべて削除されます。
以上が依存ビューを再作成せずに PostgreSQL 列を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。