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

PostgreSQL:最小カーディナリティを実装する方法は?

    CHECK制約を使用してこれを指定する方法はないため、最善のアプローチはトリガーだと思います。

    http://www.postgresql.org/docs/9.1/static /sql-createtrigger.html
    http://www.postgresql.org/docs /9.1/static/plpgsql-trigger.html

    あなたは次のようなものになってしまうでしょう(私はそれか何かをテストしていません):

    CREATE TRIGGER at_least_one before INSERT, UPDATE, DELETE ON the_one_table  FOR EACH ROW EXECUTE PROCEDURE check_at_least_one();
    
    CREATE OR REPLACE FUNCTION check_at_least_one() RETURNS trigger AS $$
        BEGIN
        nmany := select count(*) from the_many_table where the_many_table.the_one_id=NEW.id;   
        IF nmany > 0 THEN 
            RETURN NEW;
        END IF;
        RETURN NULL;
    END;
    


    1. MySQLでAで始まる名前を検索するにはどうすればよいですか?

    2. postgresの列への入力をサニタイズします

    3. utf-8のmysqlコンテンツとウムラウトを含むjson_encode

    4. 美しいリンクのために.htaccessを使用する方法