1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GORMでデータベースのレコードが削除されない時の対処法

Posted at

はじめに

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()を追加することでレコードをデータベースから物理的に削除することができます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?