階層ストレージに隣接リスト モデルを使用するテーブルがあります。したがって、この表で最も関連性の高い列は次のとおりです。
ItemId // is auto_increment
ParentId
Level
ParentTrail // in the form of "parentId/../parentId/itemId"
次に、挿入前にティガーを作成し、列Level
とにデータを入力しParentTrail
ました。auto_increment
最後の列には現在のアイテムの ID も含まれているため、挿入前のトリガーでは列を使用できないため、トリガーでトリックを使用する必要がありました。だから私はテーブルからその値を取得しinformation_schema.tables
ます。
アイテムがその親を変更したときにアイテムとその子孫を更新する更新トリガーを作成しようとするまで、すべて正常に機能します(ParentId
変更されました)。しかし、更新トリガー内でテーブルを更新できません。私ができることは、現在のレコードの値を変更することだけですが、他のレコードの値は変更できません。
階層データに別のテーブルを使用することもできますが、それは、これら 2 つのテーブルを結合するビュー (1:1 の関係) も作成する必要があることを意味し、これをできるだけ避けたいと考えています。
これらすべてを同じテーブルに配置して、これらのフィールド (Level
およびParetTrail
) がトリガーを使用して自動的に設定/更新されるようにする方法はありますか?