GORMでデータベースのレコードが削除されない時の対処法
はじめに
Gormを使用してデータベースを操作していましたが、レコードを削除した際にアプリ上で見ると消えているもののデータベース上には残っていることに気が付きました。
筆者の場合は、ユーザーのメールアドレスを一意な値にしたことで、「新規登録」→「ユーザー削除」→「同じアドレスで再登録」した際にデータベースでエラーが起きていました。
対処法
対処前に書いていたユーザー削除のコードは以下になります。
func DbDeleteUser(id int) {
d := db.GormConnect()
d.Delete(&User{}, id)
defer d.Close()
}
この書き方だと、論理削除といってレコードがデータベースから物理的に削除されるわけではなく、通常のクエリ系のメソッドで検索できなくなるだけのようです。
対処後のコードは以下になります。
func DbDeleteUser(id int) {
d := db.GormConnect()
d.Unscoped().Delete(&User{}, id) //ここを変更
defer d.Close()
}
Unscoped()
を追加することでレコードをデータベースから物理的に削除することができます。
Author And Source
この問題について(GORMでデータベースのレコードが削除されない時の対処法), 我々は、より多くの情報をここで見つけました https://qiita.com/CoGee/items/e4c21065e92c1e29fde7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .