こんにちは私は4つのテーブルを持っています
最初の表はメニュー に列があります:
- ID番号PK
- menu.Idへのparent_id番号FK
- タイトル文字の変化(250)
- softdelbooleanのデフォルトはfalse
2番目の表はページです:
- PKとしてのID
- menu.idへのFKとしてのmenu_id
- page.idへのFKとしてのpage_id
- softdelbooleanのデフォルトはfalse
3番目の表は記事です:
- PKおよびFKとしてpage.idへのID
- softdelbooleanのデフォルトはfalseに設定されています
および4番目のテーブルarticle_lang:
- PKとしてのpartial_id
- article.idへのFKとしてのid
- 言語文字
- softdelbooleanのデフォルトはfalseに設定されています
また、たとえば200のidを持つメニューを'delete'(つまり、softdel trueに設定)するときに更新ステートメントを作成する必要があります。また、parent_id = 200のすべてのメニューと、menu_id = menus_idのすべてのページ、およびpage_idの記事にsoftdel=falseを設定します。 =pages.idなど...
私はそれを行うことが可能な更新ステートメントを1つだけ必要としますか?
JPAクエリまたはEJBクエリを作成できれば素晴らしいと思います:)
オラクルで私はステートメントを書きます:
update pub_menu pm set softdel = 0 where pm.id in (
with menu_tree(id, parent_id) as (
select
t1.id , t1.parent_id
from menu t1
where t1.id = 454
union all
select
t2.id , t2.parent_id
from menu_tree
join menu t2 on menu_tree.id = t2.parent_id
)
select id from menu_tree
)
update menu_page pmp set softdel = 1 where pmp.menu_id in (
with menu_tree(id, parent_id) as (
select
t1.id , t1.parent_id
from menu t1
where t1.id = 454
union all
select
t2.id , t2.parent_id
from menu_tree
join menu t2 on menu_tree.id = t2.parent_id
)
select id from menu_tree
)
その動作はしますが、私はそれをそのようにするのは間違っています:/