sql >> データベース >  >> RDS >> PostgreSQL

テーブルに1行のみを許可するにはどうすればよいですか?

    UNIQUE 制約により、NULLの複数の行が許可されます 2つのNULLであるため、値 値が同じであると見なされることはありません。

    CHECKにも同様の考慮事項が適用されます 制約。式をTRUEにすることができます またはNULLFALSEではありません )。繰り返しますが、NULL 値はチェックを通過します。

    それを除外するには、列は必須 定義されるNOT NULL 。または、PRIMARY KEYにします PK列が定義されているためNOT NULL 自動的。詳細:

    また、booleanを使用するだけです :

    CREATE TABLE public.onerow (
       onerow_id bool PRIMARY KEY DEFAULT TRUE
     , data text
     , CONSTRAINT onerow_uni CHECK (onerow_id)
    );
    

    CHECK booleanの場合、制約はそれほど単純なものにすることができます。 桁。 TRUEのみ 許可されています。

    REVOKEを使用することをお勧めします。 (またはGRANTではありません )DELETE およびTRUNCATE publicからの権限 (および他のすべての役割)単一の行が削除されないようにします。いいね:

    REVOKE DELETE, TRUNCATE ON public.onerow FROM public;
    


    1. PostgreSQL8.3以降のOLTPパフォーマンス

    2. SQL Server再開可能インデックス:それはあなたにとって良いですか?

    3. 別のトランザクションのトランザクション分離レベルが競合しないフィルターでシリアル化できるのに、なぜTSQLステートメントブロックを挿入するのですか?

    4. 条件/値に基づいてMysqlテーブルからトップ3を取得する