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

Oracleチェック制約を使用して登録数を制限するにはどうすればよいですか?

    特定の条件下では、マテリアライズドビューを使用してテーブル制限を適用できます。 :

    create table tq84_t (
      user_id   number,
      foo       varchar2(10),
      constraint pk_tq84_t primary key (user_id, foo)
    );
    
    create materialized view log on tq84_t;
    
    create materialized view tq84_mv 
     refresh on commit
    as
      select user_id, count(*) cnt
        from tq84_t
       group by user_id;
    
    alter table tq84_mv
      add constraint check_max_2_registrations 
      check (cnt < 3);
    

    このマテリアライズド・ビューを使用すると、オラクルはコミット時にマテリアライズド・ビューの制約をチェックします。

    insert into tq84_t values (1, 'a');
    insert into tq84_t values (1, 'b');
    
    commit;
    

    これは機能します。以下はそうではありません:

    insert into tq84_t values (1, 'c');
    
    commit;
    

    で失敗します

    ORA-12008: error in materialized view refresh path
    ORA-02290: check constraint (META.CHECK_MAX_2_REGISTRATIONS) violated
    


    1. MySQLデータベースに保存されているPHPを実行するにはどうすればよいですか?

    2. MySQLテーブルが存在するかどうかを確認します

    3. 行の値を動的な列数の列に変換するにはどうすればよいですか?

    4. MySQLの複数列インデックスの列の順序