1. 程式人生 > 資料庫 >PostgresSql 多表關聯刪除語句的操作

PostgresSql 多表關聯刪除語句的操作

最近用PostgresSql資料庫進行多表關聯刪除的操作,在寫sql語句的時候遇到了問題:

DELETE s.* FROM student s,classroom c WHERE s.cid = c.id AND s.sid = 1
DELETE FROM student s,classroom c WHERE s.cid = c.id AND s.sid = 1

上面兩種寫法操作後提示報錯,下面是PostgresSql資料庫對多表關聯操作的正確用法,多張表之間用USING連線:

DELETE FROM student s USING classroom c WHERE s.cid = c.id AND s.sid = 1

補充:PostgresSQL中的限制和級聯刪除

刪除和更新時對應的操作是一樣的

PostgresSql 多表關聯刪除語句的操作

1 Restrict 禁止刪除被引用的行 (不能將約束檢查推遲到事物的晚些時候)

2 No Action 如果存在任何引用行,則丟擲錯誤,如果不宣告任何行為則No Action就是預設行為 (允許約束檢查推遲到事物的晚些時候)

3 Cascade 在刪除一個被引用的行時,引用他的行被自動刪除

4 Set Null (外來鍵上才有) 刪除被引用行時,引用他的欄位設定為NULL

5 Set Default (外來鍵上才有) 刪除被引用行時,引用他的欄位被設定為預設值

注意:一個動作宣告為Set Default 但是預設值並不能滿足外來鍵,那麼動作就會失敗

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。