Postgres の NOT NULL 制約を削除する

Postgres No Not Null Zhi Yuewo Xue Chusuru



PostgreSQL などのリレーショナル データベースでは、データの整合性を維持し、テーブル列に特定のルールを適用するために制約が非常に重要です。そのような制約の 1 つが「NOT NULL」制約です。このチュートリアルでは、NOT NULL 制約の概念を検討し、PostgreSQL での NOT NULL 制約の作成と削除に関するステップバイステップのガイドを提供します。

NOT NULL 制約とは何ですか?

NOT NULL 制約は、テーブル内のすべての行がその特定の列に対して非 NULL 値を持つ必要があるため、列に NULL 値を含めることができないことを保証します。

チュートリアルの要件:

この投稿に記載されている手順に従うには、次の要件があることを前提としています。







  1. マシンに PostgreSQL サーバーがインストールされている
  2. 基本的な SQL の知識
  3. 制約や関数などのデータベーステーブルオブジェクトを作成する権限

テーブルの例:

まず、NOT NULL 制約を含む列を含むサンプル テーブルを設定しましょう。 WordPress の wp_users テーブルに似た基本テーブルを設定する次の create table ステートメントを考えてみましょう。



CREATE TABLE wp_users (
ID シリアル主キー、
user_login VARCHAR(60) NOT NULL、
user_pass VARCHAR(255) NOT NULL、
user_nicename VARCHAR(50) NOT NULL、
user_email VARCHAR(100) NOT NULL、
user_url VARCHAR(100)、
user_registered TIMESTAMP NOT NULL DEFAULT current_timestamp、
user_activation_key VARCHAR(255)、
user_status INT NOT NULL DEFAULT 0、
表示名 VARCHAR(250) NOT NULL
);

指定されたクエリから、ほとんどの列に NOT NULL 制約が含まれていることがわかります。



特定の列に NOT NULL 制約を作成する最も効率的な方法は、テーブルの作成時です。これにより、テーブルに追加されるすべてのデータが制約のルールに従うことが保証されます。





ただし、既存のテーブルに制約を追加した場合、ルールは制約の後に追加されたデータにのみ適用され、既存のデータには適用されません。これにより、特に大きなテーブルで不整合が発生する可能性があります。

NOT NULL制約を追加する

場合によっては、既存のテーブルに NOT NULL 制約を追加することが必要になる場合があります。たとえば、ALTER TABLE コマンドの後に ALTER COLUMN 句を使用できます。



構文は次のとおりです。

ALTER TABLE テーブル名
ALTER COLUMN 列名 SET NOT NULL;

table_name をターゲット テーブルに置き換え、column_name を制約を適用するターゲット列に置き換えます。

制約を確認する

PSQL ユーティリティの「\d」コマンドを使用して、特定のテーブルに制約が存在することを確認できます。

\d テーブル名

例:

サンプル_db=# \d wp_users;

結果の出力は次のようになります。

NOT NULL制約を削除する

特定の列から NOT NULL 制約を削除することもできます。そのために、次のように ALTER TABLE 句と ALTER COLUMN 句を使用できます。

ALTER TABLE テーブル名
ALTER COLUMN 列名 DROP NOT NULL;

たとえば、wp_users テーブルの user_url 列から NOT NULL 制約を削除するには、次のクエリを実行します。

ALTER TABLE wp_users ALTER COLUMN user_url DROP NOT NULL;

これにより、テーブルから制約が削除されます。

結論

このチュートリアルでは、PostgreSQL で NOT NOLL 制約を処理する方法について説明しました。また、特定の列から既存の NOT NULL 制約を削除する方法も検討しました。