2017-08-26 92 views
1

我正在使用golang和postgres。我想通過爲該用戶傳入Id來從我的表中刪除用戶。當我運行下面的代碼時,我總是變得真實。即使我傳入表中不存在的ID。這是正常的嗎?如果用戶標識不在數據庫中,DB.Exec會返回錯誤嗎?db刪除查詢總是返回true

func DeleteUser(ID int){ 
    err = nil 
    _, err := DB.Exec("DELETE FROM Users WHERE user_id=$1", ID) 

    if err == nil { 

     return true 
    } 

    return false 

} 
+0

這是正常的,Postgres的不一樣,如果要刪除的是不存在的行返回一個錯誤,因此Go不返回錯誤也是如此。 – mkopriva

+0

@ mkopriva-ok,謝謝 – amanda45

+0

如果你想確定一行是否被刪除,你可以改變你的查詢,就像這樣'err:= db.QueryRow(「DELETE FROM Users WHERE user_id = $ 1 RETURNING user_id」,ID ).Scan(&ID)',如果得到的'err'等於'sql.ErrNoRows',則零行被刪除。 – mkopriva

回答

0

試試這個

func DeleteUser(ID int){ 
    err = nil 
    res, err := DB.Exec("DELETE FROM Users WHERE user_id=$1", ID) 

    if err == nil { 

     count, err := res.RowsAffected() 
     if err == nil { 
      /* check count and return true/false */ 
     } 

    } 

    return false 

}