最近用PostgresSql數(shù)據(jù)庫進(jìn)行多表關(guān)聯(lián)刪除的操作,在寫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
上面兩種寫法操作后提示報(bào)錯,下面是PostgresSql數(shù)據(jù)庫對多表關(guān)聯(lián)操作的正確用法,多張表之間用USING連接:
DELETE FROM student s USING classroom c WHERE s.cid = c.id AND s.sid = 1
補(bǔ)充:PostgresSQL中的限制和級聯(lián)刪除
刪除和更新時對應(yīng)的操作是一樣的
1 Restrict
禁止刪除被引用的行 (不能將約束檢查推遲到事物的晚些時候)
2 No Action
如果存在任何引用行,則拋出錯誤,如果不聲明任何行為則No Action就是缺省行為 (允許約束檢查推遲到事物的晚些時候)
3 Cascade
在刪除一個被引用的行時,引用他的行被自動刪除
4 Set Null
(外鍵上才有) 刪除被引用行時,引用他的字段設(shè)置為NULL
5 Set Default
(外鍵上才有) 刪除被引用行時,引用他的字段被設(shè)置為缺省值
注意:一個動作聲明為Set Default 但是缺省值并不能滿足外鍵,那么動作就會失敗
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- SpringBoot連接使用PostgreSql數(shù)據(jù)庫的方法
- PostgreSQL 主備數(shù)據(jù)宕機(jī)恢復(fù)測試方案
- PostgreSQL使用MySQL外表的步驟詳解(mysql_fdw)
- PostgreSQL LIST、RANGE 表分區(qū)的實(shí)現(xiàn)方案
- 淺談PostgreSQL的客戶端認(rèn)證pg_hba.conf
- 基于PostgreSQL pg_hba.conf 配置參數(shù)的使用說明