Table Constraint
1. Keys
- Primary Key: 限制該欄位每筆資料皆為 Unique, 且該欄位不可為 Null
- Unique Key: 限制該欄位每筆資料皆為 Unique, 可將該欄位設定為 Null or Not Null
- Foreign Key: 限制該欄位與其它 Table 的 PK 資料連結, 可設定 On Delete 條件
- On delete 有三種條件, 分別為 No action, Cascade 和 Set Null
- No action: 不允許單一 Table 進行新增, 修改或刪除, 若需要新增必須在 Table(PK) 中先行建立該筆資料, 才能在其它 Table(FK) 中新增資料; 若需要修改或刪除必須將全部與 Table(PK) 有所關連的 Table(FK) 一起進行修改或刪除即可
- Cascade: 刪除 Table(PK) 中的某筆資料時, 系統會將所有 Table(FK) 中的該筆欄位資料也一併被刪除
- Set Null: 刪除 Table(PK) 中的某筆資料時, 系統會將所有 Table(FK) 中的該筆欄位資料設定為 Null
2. Deferrable 與 Deferred
- Deferrable(此功能好像只是用來卡 Deferred 可否被 Enable 所用):
- Enable(勾選)為 Deferrable, Disable(不勾選)為 Not Deferrable, 預設為 Not Deferrable
- 不論 Deferrable 是否 Enable, 只要 Deferred Disable, Data 在更新至 Temporary Table(臨時表)時就會立即驗證是否符合各種限制(Ex: PK, FK, Check等)
- Deferred:
- Enable(勾選)為 Deferred, Disable(不勾選)為 Immediate, 預設為 Immediate, 只有在 Deferrable 為 Enable 狀態, Deferred 才可被 Enable
- 當 Deferred Enable 時, Data 在 更新至 Temporary Table(臨時表)時還不會驗證 Data, 直到 Commit 時才會驗證, 而 Deferred 狀態為 Immediate 時, 顧名思義當 Data 在 更新至 Temporary Table 時立即驗證
3. Checks
- Checks 中可以設定各個欄位資料的限制, Ex: 在 Condition 中增加 Col_A >= 10 AND Col_A <> 15, 那麼嘗試塞入 Col_A 中的資料不符合 Condition 時會報錯
P.S 不等於"<>"可以用"!="取代