diff --git a/main.go b/main.go
index dc51ee2..af38165 100644
--- a/main.go
+++ b/main.go
@@ -121,14 +121,26 @@ func editMachine(c *gin.Context) {
 	c.Redirect(http.StatusFound, "/machines")
 }
 func deleteMachine(c *gin.Context) {
-	if err := db.DB.Where("id = ?", c.Param("id")).Delete(db.Machine{}).Error; err != nil {
+	var machine db.Machine
+	if err := db.DB.Where("id = ?", c.Param("id")).First(&machine).Error; err != nil {
+		returnInternalError(c, err)
+		return
+	}
+	db.DB.Model(&machine).Association("Tokens").Clear()
+	if err := db.DB.Delete(machine).Error; err != nil {
 		returnInternalError(c, err)
 		return
 	}
 	c.Redirect(http.StatusFound, "/machines")
 }
 func deleteToken(c *gin.Context) {
-	if err := db.DB.Where("id = ?", c.Param("id")).Delete(db.Token{}).Error; err != nil {
+	var token db.Token
+	if err := db.DB.Where("id = ?", c.Param("id")).First(&token).Error; err != nil {
+		returnInternalError(c, err)
+		return
+	}
+	db.DB.Model(&token).Association("Machines").Clear()
+	if err := db.DB.Delete(token).Error; err != nil {
 		returnInternalError(c, err)
 		return
 	}