---
# System prepended metadata

title: DbScript Backend

---

# DbScript Backend
DbScript 新版後端說明書

## 支援語法
1. CREATE SCHEMA
2. ALTER TABLE ... DROP CONSTRAINT
3. DROP INDEX
4. CREATE SEQUENCE
5. CREATE TABLE
6. ALTER SEQUENCE ... OWNED BY
7. ALTER TABLE ... ADD
8. CREATE INDEX ... ON
9. CREATE UNIQUE INDEX ... ON
10. ALTER TABLE ... ALTER COLUMN
11. ALTER TABLE ... ALTER COLUMN
12. ALTER TABLE ... DROP COLUMN
13. SELECT SETVAL()
14. COMMENT ON ...
15. *DROP TABLE (**用 DELETE Method, 權限分開控管**)

## 資料來源群組 (`zz.sc_t301`)
增加資料來源群組，選擇群組後，會在所屬的 Data Source 下全部執行一樣的 SQL Statement

### 群組列表
> 群組名稱規則:
> 1. 全部大寫英文
> 2. 兩個單字以上用 `_` (underline)分隔
1. OLTP (主交易)
2. DASHBOARD (VIS 資訊看板)
3. BMS (帳務系統)
4. LOG (Request/Response LOG)

#### OLTP 包含的端點列表
- AWS 雲端
- OMega A2 地端
- QA DB

> QA 資料庫需要與其他主交易保持一致，之後若其他系統(如帳務系統)也導入測試平台，則在群組內在加上 QA DB 即可。


#### DASHBOARD 包含的端點列表
- AWS 雲端
- OMega A2 地端 (Later Phase)


#### BMS 包含的端點列表
- AWS 雲端
- OMega A2 地端 (Later Phase)


#### LOG 包含的端點列表
- AWS 雲端
- OMega A2 地端


## 功能說明
1. 功能上會有不同的 tab 可切換，每個 tab 會對應資料來源群組
2. 使用者先選取要異動哪個資料來源群組
3. 在輸入框貼上 SQL 語法
    - 支援多個 SQL Statement，需用`;`分隔
    - 支援語法如上方所列
4. 使用者點提交按鈕 (提交按鈕有兩個)
	- 一般提交 (POST): 不支援 DROP TABLE 語法, 如果包含 DROP TABLE, 會跳錯誤訊息:`不允許的 SQL 語法`
	- 進階提交 (DELETE): 支援上述全部語法
6. 後端判斷 SQL Statement 中，是否有異動到雙向同步的資料表
    - 若有，異動到雙向同步資料表的 SQL Statement 將會用 XDB 方式執行異動
    - 若無，則把 SQL Statement 在資料來源群組所屬的所有資料來源都執行一次
7. 回傳執行結果
    - 顯示結果分為兩塊，`雙向同步`與`其他資料來源`
    - 雙向同步結果顯示
        - 哪句 SQL
        - 執行狀態為何
        - 錯誤訊息 (如果有的話)
    - 其他結果顯示
        - 哪句 SQL
        - 執行哪個 Data Source
        - 執行狀態為何
        - 錯誤訊息 (如果有的話)

## 補充說明
1. Sequence
	- `zz.sc_t302` 中會記錄所有資料來源端點 (Data Source)，並且記錄 Sequence 應該從第幾個開始，如果異動 DDL 裡面有建立 `SEQUENCE` 或者建立資料表的欄位內有新增 `serial` 相關的資料型態 (像是 bigserial), 則會根據資料來源端點設定的值重設 SEQUENCE.
2. 如果執行的是 `CREATE TABLE` 的 DDL，該創建的資料表會自動被記錄在 `zz.sc_t300` 中，並且**執行人員會是資料表負責人**
3. 反之如果執行的是 `DROP TABLE` 的 DDL，該資料表會自動從 `zz.sc_t300` 中被刪除