76 lines
4.9 KiB
Markdown
76 lines
4.9 KiB
Markdown
# xcsql [�ントロール]SQL文テーブル — xlsx vs DB 対照
|
||
|
||
- xlsx: /mnt/d/25.テーブル一覧/10.テーブル定義/30.給与/xcsql.xlsx
|
||
- DB: updsv7_opho_ci (192.168.1.72:5432) / public.xcsql
|
||
- 改訂履歴: 7.0.0 新規作成 (2023-10-04 NSC) — 改訂なし
|
||
|
||
## 1. 全体対数
|
||
|
||
| 区分 | 項目 | 値 |
|
||
|---|---|---|
|
||
| 列数 | xlsx | 13 |
|
||
| 列数 | DB | 13 |
|
||
| 列差 | DB のみ | 0 |
|
||
| 列差 | xlsx のみ | 0 |
|
||
| 行数 | DB | 約871行 |
|
||
| 表サイズ | DB | 1120 kB |
|
||
| インデックス | xcsql_idx UNIQUE | (ccompkb, cqtaikeikb, dstart, cpgmid, nrunseq) |
|
||
|
||
## 2. 業務身份
|
||
|
||
- **UPDS-V7 の「SQL 集中管理表」** — 各機能プログラムが必要な SQL(UPDATE/INSERT/DELETE/SELECT)をプログラム内にハードコードせず、本表に格納
|
||
- プログラム実行時、cpgmid + nrunseq で該当 SQL を本表から取得 → 即時実行
|
||
- 用途:
|
||
- SQL の変更時にプログラム再コンパイル不要(表データ更新で対応)
|
||
- 業務ロジックを「コードに書く」「DB に書く」のハイブリッドパターン
|
||
- クライアントごとのカスタマイズ容易(同じ cpgmid に対し適用期間 dstart〜dend で複数バージョン保持)
|
||
|
||
## 3. カラム対照(13 列 全一致)
|
||
|
||
| No | カラム名 | カラムID | xlsx型 | xlsx桁 | xlsx制約 | DB型 | DB桁 | NOT NULL | xlsx idx | 用途 |
|
||
|---|---|---|---|---|---|---|---|---|---|---|
|
||
| 1 | 会社区分 | ccompkb | varchar | 2 | N | varchar | 2 | YES | 1 | PK候補 |
|
||
| 2 | 給与体系区分 | cqtaikeikb | varchar | 2 | N | varchar | 2 | YES | 3 | PK候補 |
|
||
| 3 | 適用開始年月 | dstart | date | - | N | date | - | YES | 4 | PK候補 (YYYY/MM/01固定) |
|
||
| 4 | 適用終了年月 | dend | date | - | N | date | - | YES | - | 末日固定(無期限は 2222/12/31) |
|
||
| 5 | 更新ユーザ)端末ID | cmnclient | varchar | 10 | - | varchar | 10 | NO | - | 更新ログ |
|
||
| 6 | 更新ユーザ)会社区分 | cmncomp | varchar | 2 | - | varchar | 2 | NO | - | 更新ログ |
|
||
| 7 | 更新ユーザ)ユーザID | cmnuser | varchar | 10 | - | varchar | 10 | NO | - | 更新ログ |
|
||
| 8 | 更新�ーザ)更新日時 | dmndate | timestamp | - | - | timestamp | - | NO | - | 更新ログ |
|
||
| 9 | プログラム識別 | cpgmid | varchar | 20 | N | varchar | 20 | YES | 2 | PK候補 (例: DJNC1020, UMMN0120, UCLR1000 等) |
|
||
| 10 | 実行SEQ | nrunseq | numeric | 4 | N | numeric | 4,0 | YES | 5 | PK候補 (同一プログラム内の実行順序) |
|
||
| 11 | SELECT文区分 | nselect | numeric | 1 | N | numeric | 1,0 | YES | - | 1=SELECT文(参照用)、0=それ以外(更新系) |
|
||
| 12 | SQL文 | csql | varchar | 4000 | - | varchar | 4000 | NO | - | **SQL本体**(MyBatis 動的バインド可)|
|
||
| 13 | 備考 | cbikou | varchar | 40 | - | varchar | 40 | NO | - | コメント用 |
|
||
|
||
## 4. 主キー
|
||
|
||
- UNIQUE INDEX: xcsql_idx (ccompkb, cqtaikeikb, dstart, cpgmid, nrunseq) — 5 列複合キー
|
||
- xlsx H列「インデックス」記載: ccompkb=1, cqtaikeikb=3, dstart=4, cpgmid=2, nrunseq=5, dend 空欄 → 5 列複合 UNIQUE として存在
|
||
- dend は NOT NULL だが PK 表記なし → 業務上 dend は「有効期限終端」で PK 判定に使われない(dstart のみ期間判定)
|
||
|
||
## 5. データ例(先頭 5 件)
|
||
|
||
| cpgmid | nrunseq | nselect | csql 抜粋 | cbikou |
|
||
|---|---|---|---|---|
|
||
| DJNC1020\|1 | 2620 | 0 | UPDATE DKIDO_DUMMY A SET CHECK_FLG = '8' WHERE A.WK_CLIENT_ID = #{XsClnt端末ID} | 異動入力論理チェック 常勤の厚友会加入脱退 |
|
||
| DJNC1020\|1 | 2630 | 0 | INSERT INTO DK_RONRI_CHK SELECT ... | 異動入力論理チェック 再任用以外の令和会加入脱退 |
|
||
| UMMN0120 | 20 | 0 | DELETE FROM UWLOADBANK WHERE CCOMPKB in ('00',#{Gs会社ID}) | 各種初期化処理 |
|
||
| UMMN0120 | 30 | 0 | DELETE FROM UWBANKSAI WHERE ... | 各種初期化処理 |
|
||
| UMMN0120 | 40 | 0 | DELETE FROM UWFURIKOMISAI WHERE ... | 各種初期化処理 |
|
||
|
||
## 6. 観察
|
||
|
||
- csql に MyBatis 動的バインド `#{Gs会社ID}` `#{XsClnt端末ID}` が含まれる → xcsql から読んだ SQL をさらに MyBatis が評価する二段構えの仕組み
|
||
- dstart='1899-12-31' / dend='2222-12-30' は「全期間有効」セマフォック値(UPDS-V7 全体標準)
|
||
- cpgmid に `|` 区切りでバージョン管理する場合あり(例: DJNC1020\|1 = DJNC1020 のバージョン 1)
|
||
- nrunseq は同一 cpgmid 内で SQL の実行順序を保証(例: 10, 20, 30, ... のように 10 刻み)
|
||
- nselect 区分により、参照系 SQL(一覧検索等)と更新系 SQL(INSERT/UPDATE/DELETE)を判別
|
||
|
||
## 7. 結論
|
||
|
||
- 列定義(列名・型・桁・NOT NULL)は xlsx と DB で完全一致
|
||
- PK 表記ルール: xlsx H列「インデックス」で複合 UNIQUE を 5 列複合と表現
|
||
- 致命的な不一致なし
|
||
- 要確認: xlsx F列「N」6列のうち dend は PK 表記なし → 業務上 dstart のみが期間判定に使われる設計
|