本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
DROP USER
從資料庫捨棄使用者。使用單一 DROP USER 命令即可捨棄多個使用者。您必須是資料庫超級使用者才能執行此命令。
Syntax (語法)
DROP USER [ IF EXISTS ] name [, ... ]
參數
- IF EXISTS
-
此子句會指出,若指定的使用者帳戶不存在,則命令不應進行任何變更,且應傳回使用者帳戶不存在的訊息,而不是在發生錯誤的情況下終止。
此子句在編寫指令碼時很實用,如此指令碼就不會因為 DROP USER 對不存在的使用者帳戶執行而失敗。
- name
-
要移除的使用者帳戶名稱。您可以指定多個使用者帳戶,並以逗號分隔每個帳戶名稱。
使用須知
若使用者擁有任何資料庫物件,像是結構描述、資料庫、資料表或檢視,或是使用者具有資料庫、資料表、資料欄或群組的任何權限,則無法捨棄使用者。如果您嘗試捨棄這類使用者,則會收到下列錯誤之一。
ERROR: user "username" can't be dropped because the user owns some object [SQL State=55006] ERROR: user "username" can't be dropped because the user has a privilege on some object [SQL State=55006]
Amazon Redshift 會在刪除使用者之前,只會檢查當前資料庫。若使用者擁有資料庫物件,或具有其他資料庫中物件的權限,DROP USER 則不會傳回錯誤。若您捨棄的使用者擁有其他資料庫中的物件,則這些物件的擁有者會變更為「不明」。
若使用者擁有物件,請先捨棄物件或將其所有權變更為其他使用者,再捨棄原始使用者。如果使用者具有物件的權限,請先撤銷權限,再捨棄使用者。以下範例顯示在捨棄使用者前,先捨棄物件、變更所有權,以及撤銷權限。
drop database dwdatabase; alter schema dw owner to dwadmin; revoke all on table dwtable from dwuser; drop user dwuser;
範例
以下範例會捨棄名為 danny 的使用者帳戶:
drop user danny;
以下範例會捨棄 danny 和 billybob 這兩個使用者帳戶:
drop user danny, billybob;
以下範例會捨棄使用者帳户 danny (如存在的話),或不執行任何動作,並於該使用者帳户不存在時傳回訊息:
drop user if exists danny;