Skip to content

Commit 06cafe4

Browse files
committed
fix: If not exists 구문 추가
1 parent d995f0f commit 06cafe4

File tree

2 files changed

+49
-36
lines changed

2 files changed

+49
-36
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
-- ========================================
22
-- 시나리오 대표 여부 컬럼 추가
33
-- ========================================
4-
ALTER TABLE scenarios ADD COLUMN representative BOOLEAN DEFAULT FALSE NOT NULL;
4+
ALTER TABLE scenarios ADD COLUMN IF NOT EXISTS representative BOOLEAN DEFAULT FALSE NOT NULL;

back/src/main/resources/db/migration/V3__add_versioning_system_on_node.sql

Lines changed: 48 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
-- ========================================
44

55
-- 1. NodeAtom 테이블 생성
6-
CREATE TABLE node_atoms (
6+
CREATE TABLE IF NOT EXISTS node_atoms (
77
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
88
created_date TIMESTAMP(6),
99
content_key VARCHAR(64)
1010
);
1111

1212
-- 2. NodeAtomVersion 테이블 생성
13-
CREATE TABLE node_atom_versions (
13+
CREATE TABLE IF NOT EXISTS node_atom_versions (
1414
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
1515
created_date TIMESTAMP(6),
1616
age_year INTEGER NOT NULL,
@@ -21,11 +21,12 @@ CREATE TABLE node_atom_versions (
2121
description TEXT,
2222
options_json TEXT,
2323
situation TEXT,
24-
category VARCHAR(20) CHECK (category IN ('CAREER','EDUCATION','ETC','FINANCE','HEALTH','LOCATION','RELATIONSHIP')) NOT NULL
24+
category VARCHAR(20) NOT NULL,
25+
CONSTRAINT check_nav_category CHECK (category IN ('CAREER','EDUCATION','ETC','FINANCE','HEALTH','LOCATION','RELATIONSHIP'))
2526
);
2627

2728
-- 3. BaselineBranch 테이블 생성
28-
CREATE TABLE baseline_branches (
29+
CREATE TABLE IF NOT EXISTS baseline_branches (
2930
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
3031
created_date TIMESTAMP(6),
3132
base_line_id BIGINT NOT NULL,
@@ -34,7 +35,7 @@ CREATE TABLE baseline_branches (
3435
);
3536

3637
-- 4. BaselineCommit 테이블 생성
37-
CREATE TABLE baseline_commits (
38+
CREATE TABLE IF NOT EXISTS baseline_commits (
3839
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
3940
created_date TIMESTAMP(6),
4041
author_user_id BIGINT NOT NULL,
@@ -44,7 +45,7 @@ CREATE TABLE baseline_commits (
4445
);
4546

4647
-- 5. BaselinePatch 테이블 생성
47-
CREATE TABLE baseline_patches (
48+
CREATE TABLE IF NOT EXISTS baseline_patches (
4849
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
4950
created_date TIMESTAMP(6),
5051
age_year INTEGER NOT NULL,
@@ -58,68 +59,80 @@ CREATE TABLE baseline_patches (
5859
-- ========================================
5960

6061
-- 6. base_nodes 테이블에 current_version_id 추가
61-
ALTER TABLE base_nodes ADD COLUMN current_version_id BIGINT;
62+
ALTER TABLE base_nodes ADD COLUMN IF NOT EXISTS current_version_id BIGINT;
6263

6364
-- 7. decision_nodes 테이블에 follow_policy와 override_version_id 추가
64-
ALTER TABLE decision_nodes ADD COLUMN follow_policy VARCHAR(10) DEFAULT 'FOLLOW' NOT NULL;
65-
ALTER TABLE decision_nodes ADD CONSTRAINT check_follow_policy CHECK (follow_policy IN ('FOLLOW','OVERRIDE','PINNED'));
66-
ALTER TABLE decision_nodes ADD COLUMN override_version_id BIGINT;
65+
ALTER TABLE decision_nodes ADD COLUMN IF NOT EXISTS follow_policy VARCHAR(10) DEFAULT 'FOLLOW' NOT NULL;
66+
ALTER TABLE decision_nodes ADD COLUMN IF NOT EXISTS override_version_id BIGINT;
6767

6868
-- 8. decision_lines 테이블에 base_branch_id와 pinned_commit_id 추가
69-
ALTER TABLE decision_lines ADD COLUMN base_branch_id BIGINT;
70-
ALTER TABLE decision_lines ADD COLUMN pinned_commit_id BIGINT;
69+
ALTER TABLE decision_lines ADD COLUMN IF NOT EXISTS base_branch_id BIGINT;
70+
ALTER TABLE decision_lines ADD COLUMN IF NOT EXISTS pinned_commit_id BIGINT;
7171

7272
-- ========================================
7373
-- 인덱스 생성
7474
-- ========================================
7575

7676
-- NodeAtomVersion 인덱스
77-
CREATE INDEX idx_navers_atom ON node_atom_versions (atom_id);
78-
CREATE INDEX idx_navers_parent ON node_atom_versions (parent_version_id);
79-
CREATE INDEX idx_navers_age ON node_atom_versions (age_year);
77+
CREATE INDEX IF NOT EXISTS idx_navers_atom ON node_atom_versions (atom_id);
78+
CREATE INDEX IF NOT EXISTS idx_navers_parent ON node_atom_versions (parent_version_id);
79+
CREATE INDEX IF NOT EXISTS idx_navers_age ON node_atom_versions (age_year);
8080

8181
-- BaselineBranch 인덱스
82-
CREATE INDEX idx_blbranch_line ON baseline_branches (base_line_id);
82+
CREATE INDEX IF NOT EXISTS idx_blbranch_line ON baseline_branches (base_line_id);
8383

8484
-- BaselineCommit 인덱스
85-
CREATE INDEX idx_blcommit_branch ON baseline_commits (branch_id);
86-
CREATE INDEX idx_blcommit_parent ON baseline_commits (parent_commit_id);
85+
CREATE INDEX IF NOT EXISTS idx_blcommit_branch ON baseline_commits (branch_id);
86+
CREATE INDEX IF NOT EXISTS idx_blcommit_parent ON baseline_commits (parent_commit_id);
8787

8888
-- BaselinePatch 인덱스
89-
CREATE INDEX idx_blpatch_commit ON baseline_patches (commit_id);
90-
CREATE INDEX idx_blpatch_age ON baseline_patches (age_year);
89+
CREATE INDEX IF NOT EXISTS idx_blpatch_commit ON baseline_patches (commit_id);
90+
CREATE INDEX IF NOT EXISTS idx_blpatch_age ON baseline_patches (age_year);
9191

9292
-- DecisionLine 인덱스
93-
CREATE INDEX idx_dline_branch ON decision_lines (base_branch_id);
94-
CREATE INDEX idx_dline_pinned ON decision_lines (pinned_commit_id);
93+
CREATE INDEX IF NOT EXISTS idx_dline_branch ON decision_lines (base_branch_id);
94+
CREATE INDEX IF NOT EXISTS idx_dline_pinned ON decision_lines (pinned_commit_id);
9595

9696
-- ========================================
9797
-- 외래키 제약조건 추가
9898
-- ========================================
9999

100100
-- NodeAtomVersion FK
101-
ALTER TABLE node_atom_versions ADD CONSTRAINT fk_node_atom_versions_atom FOREIGN KEY (atom_id) REFERENCES node_atoms(id);
102-
ALTER TABLE node_atom_versions ADD CONSTRAINT fk_node_atom_versions_parent FOREIGN KEY (parent_version_id) REFERENCES node_atom_versions(id);
101+
ALTER TABLE node_atom_versions ADD CONSTRAINT IF NOT EXISTS fk_node_atom_versions_atom
102+
FOREIGN KEY (atom_id) REFERENCES node_atoms(id);
103+
ALTER TABLE node_atom_versions ADD CONSTRAINT IF NOT EXISTS fk_node_atom_versions_parent
104+
FOREIGN KEY (parent_version_id) REFERENCES node_atom_versions(id);
103105

104106
-- BaselineBranch FK
105-
ALTER TABLE baseline_branches ADD CONSTRAINT fk_baseline_branches_base_line FOREIGN KEY (base_line_id) REFERENCES base_lines(id);
106-
ALTER TABLE baseline_branches ADD CONSTRAINT fk_baseline_branches_head_commit FOREIGN KEY (head_commit_id) REFERENCES baseline_commits(id);
107+
ALTER TABLE baseline_branches ADD CONSTRAINT IF NOT EXISTS fk_baseline_branches_base_line
108+
FOREIGN KEY (base_line_id) REFERENCES base_lines(id);
109+
ALTER TABLE baseline_branches ADD CONSTRAINT IF NOT EXISTS fk_baseline_branches_head_commit
110+
FOREIGN KEY (head_commit_id) REFERENCES baseline_commits(id);
107111

108112
-- BaselineCommit FK
109-
ALTER TABLE baseline_commits ADD CONSTRAINT fk_baseline_commits_branch FOREIGN KEY (branch_id) REFERENCES baseline_branches(id);
110-
ALTER TABLE baseline_commits ADD CONSTRAINT fk_baseline_commits_parent FOREIGN KEY (parent_commit_id) REFERENCES baseline_commits(id);
113+
ALTER TABLE baseline_commits ADD CONSTRAINT IF NOT EXISTS fk_baseline_commits_branch
114+
FOREIGN KEY (branch_id) REFERENCES baseline_branches(id);
115+
ALTER TABLE baseline_commits ADD CONSTRAINT IF NOT EXISTS fk_baseline_commits_parent
116+
FOREIGN KEY (parent_commit_id) REFERENCES baseline_commits(id);
111117

112118
-- BaselinePatch FK
113-
ALTER TABLE baseline_patches ADD CONSTRAINT fk_baseline_patches_commit FOREIGN KEY (commit_id) REFERENCES baseline_commits(id);
114-
ALTER TABLE baseline_patches ADD CONSTRAINT fk_baseline_patches_before FOREIGN KEY (before_version_id) REFERENCES node_atom_versions(id);
115-
ALTER TABLE baseline_patches ADD CONSTRAINT fk_baseline_patches_after FOREIGN KEY (after_version_id) REFERENCES node_atom_versions(id);
119+
ALTER TABLE baseline_patches ADD CONSTRAINT IF NOT EXISTS fk_baseline_patches_commit
120+
FOREIGN KEY (commit_id) REFERENCES baseline_commits(id);
121+
ALTER TABLE baseline_patches ADD CONSTRAINT IF NOT EXISTS fk_baseline_patches_before
122+
FOREIGN KEY (before_version_id) REFERENCES node_atom_versions(id);
123+
ALTER TABLE baseline_patches ADD CONSTRAINT IF NOT EXISTS fk_baseline_patches_after
124+
FOREIGN KEY (after_version_id) REFERENCES node_atom_versions(id);
116125

117126
-- BaseNode FK
118-
ALTER TABLE base_nodes ADD CONSTRAINT fk_base_nodes_current_version FOREIGN KEY (current_version_id) REFERENCES node_atom_versions(id);
127+
ALTER TABLE base_nodes ADD CONSTRAINT IF NOT EXISTS fk_base_nodes_current_version
128+
FOREIGN KEY (current_version_id) REFERENCES node_atom_versions(id);
119129

120130
-- DecisionNode FK
121-
ALTER TABLE decision_nodes ADD CONSTRAINT fk_decision_nodes_override_version FOREIGN KEY (override_version_id) REFERENCES node_atom_versions(id);
131+
ALTER TABLE decision_nodes ADD CONSTRAINT IF NOT EXISTS fk_decision_nodes_override_version
132+
FOREIGN KEY (override_version_id) REFERENCES node_atom_versions(id);
122133

123134
-- DecisionLine FK
124-
ALTER TABLE decision_lines ADD CONSTRAINT fk_decision_lines_base_branch FOREIGN KEY (base_branch_id) REFERENCES baseline_branches(id);
125-
ALTER TABLE decision_lines ADD CONSTRAINT fk_decision_lines_pinned_commit FOREIGN KEY (pinned_commit_id) REFERENCES baseline_commits(id);
135+
ALTER TABLE decision_lines ADD CONSTRAINT IF NOT EXISTS fk_decision_lines_base_branch
136+
FOREIGN KEY (base_branch_id) REFERENCES baseline_branches(id);
137+
ALTER TABLE decision_lines ADD CONSTRAINT IF NOT EXISTS fk_decision_lines_pinned_commit
138+
FOREIGN KEY (pinned_commit_id) REFERENCES baseline_commits(id);

0 commit comments

Comments
 (0)