Postgresql Db delete查询始终返回true
我在用葛兰和博士后。我想通过传入该用户的Id从表中删除该用户。当我运行下面的代码时,我总是得到正确的答案。即使我传入了一个表中不存在的ID。这正常吗?如果用户ID不在数据库中,DB.Exec是否返回errPostgresql Db delete查询始终返回true,postgresql,go,Postgresql,Go,我在用葛兰和博士后。我想通过传入该用户的Id从表中删除该用户。当我运行下面的代码时,我总是得到正确的答案。即使我传入了一个表中不存在的ID。这正常吗?如果用户ID不在数据库中,DB.Exec是否返回err func DeleteUser(ID int){ err = nil _, err := DB.Exec("DELETE FROM Users WHERE user_id=$1", ID) if err == nil { return 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
}
试试这个
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
}
试试这个
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
}
这是正常的,如果您正在删除一个不存在的行,postgres不会返回错误,因此Go也不会返回错误。@mkopriva ok,谢谢。如果您想确定一行是否已被删除,您可以更改查询,如so err:=db.QueryRowDELETE FROM Users,其中user_id=$1返回user_id,ID.Scan&ID,如果结果错误等于sql.ErrNoRows,则删除了零行。这是正常的,如果您删除的行不存在,postgres不会返回错误,因此Go也不会返回错误。@mkopriva ok,谢谢。如果您想确定行是否被删除,您可以更改查询,与此类似,err:=db.QueryRowDELETE FROM Users,其中user_id=$1返回user_id,id.Scan&id,如果结果err等于sql.ErrNoRows,则删除零行。