# ssot-project-data-executor > プロジェクト関連データ(project_master, stakeholder_master等)のINSERT/UPDATE/DELETE操作を実行するスキル。 - Author: Hiroshi Kataoka - Repository: pri-Kataoka-Hiroshi/kfc_generator2 - Version: 20260126232234 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-07 - Source: https://github.com/pri-Kataoka-Hiroshi/kfc_generator2 - Web: https://mule.run/skillshub/@@pri-Kataoka-Hiroshi/kfc_generator2~ssot-project-data-executor:20260126232234 --- # ssot-project-data-executor プロジェクト関連データ(project_master, stakeholder_master等)のINSERT/UPDATE/DELETE操作を実行するスキル。 ## 目的 - プロジェクト定義に関するデータ操作を統一的に実行 - INSERT(新規追加)/ UPDATE(部分更新)/ DELETE(カスケード削除)/ UPSERT(存在すれば更新、なければ挿入)をサポート - テンポラリDBでの事前検証による安全性確保 - `--diff` オプションによる変更前後の比較確認 ## 対象テーブル | テーブル | 主キー | 説明 | |----------|--------|------| | `project_master` | `project_cd` | プロジェクト基本情報 | | `project_background` | `background_cd` | プロジェクト背景(1行=1レコード) | | `project_objective` | `objective_cd` | プロジェクト目的(1行=1レコード) | | `project_assumption` | `assumption_cd` | 前提条件(1行=1レコード) | | `project_constraint` | `constraint_cd` | 制約条件(1行=1レコード) | | `stakeholder_master` | `stakeholder_cd` | ステークホルダー定義 | ## 使用方法 ### コマンドライン ```bash # UPDATE: プロジェクト名のみ更新 python3 .claude/skills/ssot-project-data-executor/scripts/execute_project_data.py \ --operation update \ --target project_master \ --key '{"project_cd": "PROJ_GSC_CRM"}' \ --fields '{"project_name": "新しいプロジェクト名"}' # INSERT: 背景を追加 python3 .claude/skills/ssot-project-data-executor/scripts/execute_project_data.py \ --operation insert \ --target project_background \ --fields '{"project_cd": "PROJ_GSC_CRM", "sort_order": 9, "content": "追加の背景"}' # DELETE: プロジェクトと関連データをカスケード削除 python3 .claude/skills/ssot-project-data-executor/scripts/execute_project_data.py \ --operation delete \ --target project_master \ --key '{"project_cd": "PROJ_GSC_CRM"}' \ --cascade # JSONファイルから一括操作 python3 .claude/skills/ssot-project-data-executor/scripts/execute_project_data.py \ --input operations.json # 差分プレビュー(UPDATE時) python3 .claude/skills/ssot-project-data-executor/scripts/execute_project_data.py \ --operation update \ --target project_master \ --key '{"project_cd": "PROJ_GSC_CRM"}' \ --fields '{"project_name": "新しいプロジェクト名"}' \ --diff ``` ### オプション一覧 | オプション | 短縮形 | 説明 | |-----------|--------|------| | `--operation` | `-o` | 操作タイプ: `insert`, `update`, `upsert`, `delete` | | `--target` | `-t` | 対象テーブル名 | | `--key` | `-k` | 更新/削除対象を特定するキー(JSON形式) | | `--fields` | `-f` | 更新/挿入するフィールド(JSON形式) | | `--input` | `-i` | JSONファイルからの入力 | | `--diff` | `-d` | 差分プレビュー表示(update時のみ) | | `--dry-run` | | SQLを生成するが実行しない | | `--verbose` | `-v` | 詳細ログ出力 | | `--cascade` | | DELETE時に子テーブルも削除 | | `--apply` | | 本番DBに直接適用 | ## JSON構造 ### 単一操作 ```json { "operation": "update", "target": "project_master", "key": { "project_cd": "PROJ_GSC_CRM" }, "fields": { "project_name": "新しいプロジェクト名", "project_leader": "新しいリーダー名" } } ``` ### 複数操作(バッチ) ```json { "operations": [ { "operation": "update", "target": "project_master", "key": { "project_cd": "PROJ_GSC_CRM" }, "fields": { "project_name": "更新後の名前" } }, { "operation": "insert", "target": "project_background", "fields": { "project_cd": "PROJ_GSC_CRM", "sort_order": 9, "content": "追加の背景説明" } } ] } ``` ## ID採番ルール 子テーブル(background, objective, assumption, constraint)のINSERT時、IDは以下の形式で自動生成されます: | テーブル | ID形式 | 例 | |----------|--------|-----| | `project_background` | `BG_{PROJECT}_{sort_order:03d}` | `BG_GSC_CRM_001` | | `project_objective` | `OBJ_{PROJECT}_{sort_order:03d}` | `OBJ_GSC_CRM_001` | | `project_assumption` | `ASM_{PROJECT}_{sort_order:03d}` | `ASM_GSC_CRM_001` | | `project_constraint` | `CST_{PROJECT}_{sort_order:03d}` | `CST_GSC_CRM_001` | ※ `{PROJECT}` は `project_cd` から `PROJ_` を除いた部分 ## カスケード削除 `project_master` を削除する際に `--cascade` オプションを指定すると、以下の順序で関連レコードを削除します: 1. `stakeholder_master` 2. `project_background` 3. `project_objective` 4. `project_assumption` 5. `project_constraint` 6. `project_master` ### 制限事項 `project_cd` を外部キーとして参照しているテーブルは多数あります(`business_goal`, `problem_definition`, `specification_definition` など)。このスキルのカスケード削除は、上記6テーブルのみを対象としています。 他のテーブルにもデータが存在する場合、外部キー制約エラーになります。その場合は、先に関連データを手動で削除するか、`ssot-db-initializer` でデータベースを再初期化してください。 ## 出力ファイル 出力ファイル名は `SSOT_db/sql/` 配下の既存 `step01_*.sql` ファイルから次の番号を自動採番します。 ### 単一操作時 | 操作 | ファイル名例 | |------|-------------| | `update project_master` | `step01_09_update_master.sql` | | `insert project_background` | `step01_10_insert_background.sql` | | `delete stakeholder_master` | `step01_11_delete_stakeholder.sql` | ### バッチ操作時 | 操作 | ファイル名例 | |------|-------------| | 複数操作(JSONファイル入力) | `step01_09_batch_update.sql` | ※ 番号は `step01_01` 〜 `step01_08` が既に存在する場合、`step01_09` から開始されます。 ## 関連スキル - `ssot-step01-01-builder`: 従来の一括INSERT用スキル(プロジェクト初期設定向け) - `ssot-db-initializer`: データベース初期化 - `ssot-schema-query`: テーブルスキーマ確認 ## 参照ドキュメント - [JSON構造仕様](references/json_schema.md) - [部分更新ガイド](references/update_guide.md)