私はもちろん、ルートのエントリを指すレコードのルートIDを埋めるべきBEFOREトリガを持っています。エントリのparent_idがnullの場合は、それ自身を記録することを示します。もしBEFORE INSERTトリガーの中で、parent_idがnullの場合、AFTERトリガーでroot_idを埋めるのを避けるために、次のシーケンス値、fill ID、およびroot_idを取得できますか?独自の定義によるとPostgresの挿入トリガのIDは
0
A
答えて
0
:
エントリのPARENT_IDがnullの場合、それ自体が
を記録するために指すことになり、あなたがしなければならない。
if new.parent_id is null then
new.root_id = new.id ;
else
WITH RECURSIVE p (parent_id, level) AS
(
-- Base case
SELECT
parent_id, 0 as level
FROM
t
WHERE
t.id = new.id
UNION ALL
SELECT
t.parent_id, level + 1
FROM
t JOIN p ON t.id = p.parent_id
WHERE
t.parent_id IS NOT NULL
)
SELECT
parent_id
INTO
new.root_id
FROM
p
ORDER BY
level DESC
LIMIT
1 ;
end if ;
RETURN new ;
関連する問題
- 1. MySQLのトリガ - INET_ATON挿入
- 2. Postgresは年が挿入
- 3. Postgresエラー:カラム "id"のヌル値 - 挿入操作中
- 4. PHP Postgres:最後の挿入IDを取得
- 5. 配列の挿入Postgres
- 6. 挿入トリガまたは更新トリガでストアドプロシージャをトリガする
- 7. MySQLのトリガのif-else挿入更新
- 8. レコード挿入後24時間後にpostgresトリガを実行しますか?
- 9. postgresデータベースに挿入する
- 10. Postgres:挿入と削除
- 11. PostgresのJSONBとの矛盾の挿入
- 12. MySQLのトリガ - 挿入された値
- 13. sqliteトリガの条件付き挿入文
- 14. MySqlの挿入トリガ出力NULL
- 15. App Engine StandardのPostgres - 挿入時のエラー
- 16. 初期データの挿入後にPostgresがID「already exists」を返すのですか?
- 17. 最後のプライマリキーを取得 - IDなし - トリガを使用して挿入
- 18. 挿入トリガでID列の値を取得する方法SQL Server
- 19. postgresとjavaでのスパーク挿入操作
- 20. Postgresの高速配列挿入
- 21. Postgres挿入前のデータフォーマットCOPY FROM
- 22. Rails Postgres重複行の挿入問題
- 23. Postgresの配列挿入機能
- 24. テーブルの挿入、更新、削除イベントのキャプチャ別のテーブルへのトリガと挿入
- 25. SQL Server挿入トリガを複数回挿入する
- 26. Postgres 9.5に挿入された行のIDを取得する方法UPSERT
- 27. postgresトリガ関数は、他のテーブルにレコードを少数しか挿入しません。
- 28. 挿入親要素のID
- 29. Django - 最後の挿入ID
- 30. HTTP PUTの挿入とID
をシーケンスが来るんかここの写真に? – e4c5