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

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

    まず、PostgreSQLの現在のバージョンに更新します。 8.1は長い間死んでいて、忘れられていて、サポートされておらず、非常に古いです..あなたは私の主張を理解しますか? 現在のバージョンはPostgreSQL9.2です

    次に、トリガーを使用します ルールの代わりに。簡単です。それはほとんどの人が行く方法です。私はそうします。

    colの場合 テーブルtbl内 ...

    まず、トリガー関数を作成します。

    CREATE OR REPLACE FUNCTION trg_tbl_insupbef()
      RETURNS trigger AS
    $BODY$
    BEGIN
    
    NEW.col := f_myfunc(NEW.col);  -- your function here, must return matching type
    
    RETURN NEW;
    
    END;
    $BODY$
      LANGUAGE plpgsql VOLATILE;
    

    次に、トリガーで使用します。
    古代のPostgres8.1の場合:

    CREATE TRIGGER insupbef
      BEFORE INSERT OR UPDATE
      ON tbl
      FOR EACH ROW
      EXECUTE PROCEDURE trg_tbl_insupbef();
    

    現代のPostgres(9.0+)の場合

    CREATE TRIGGER insbef
      BEFORE INSERT OR UPDATE OF col  -- only call trigger, if column was updated
      ON tbl
      FOR EACH ROW
      EXECUTE PROCEDURE trg_tbl_insupbef();
    

    より多くのものを1つのトリガーにパックすることはできますが、その場合、1つの列だけでUPDATEトリガーを条件付けることはできません...




    1. MySQLで最も人気のある単語の出現を見つける方法は?

    2. PostgreSQLで配列を作成する方法

    3. SQL Server更新トリガー、変更されたフィールドのみを取得

    4. MySQLデータベースをPHPMyAdminからエクスポートしてSQLiteにインポートするにはどうすればよいですか?