NULLを返す関数を呼ぶトリガーを作成
testdb=# \df
List of functions
Schema | Name | Result data type | Argument data types | Type
--------+-----------------+------------------+---------------------+------
public | log_time_writer | trigger | | func
public | sample_func | boolean | text | func
test3 | sample_func | trigger | | func
(3 rows)
testdb=# \d sample
Table "test3.sample"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+---------
id | integer | | |
name | text | | |
date | date | | |
Triggers:
sample_trg AFTER INSERT ON sample FOR EACH ROW EXECUTE PROCEDURE sample_func()
testdb=# SELECT * FROM sample;
id | name | date
----+------+------------
1 | 木村 | 2017-11-05
2 | 田中 | 2017-11-07
3 | 小林 | 2018-01-28
4 | 沢田 | 2018-02-02
(4 rows)
タイミングのオプションにAFTERが指定されているため、トリガーがNULLを返す場合もINSERT処理は実行される。
testdb=# INSERT INTO sample VALUES(5,'町野','2018-05-05');
INSERT 0 1
testdb=# SELECT * FROM sample;
id | name | date
----+------+------------
1 | 木村 | 2017-11-05
2 | 田中 | 2017-11-07
3 | 小林 | 2018-01-28
4 | 沢田 | 2018-02-02
5 | 町野 | 2018-05-05
(5 rows)
testdb=# SELECT sample_func(NULL);
sample_func
-------------
f
(1 row)
この記事が気に入ったらサポートをしてみませんか?