Я пытаюсь добавить внешний ключ в рекурсивную таблицу и включить режим onDelete
onUpdate
CASCADE
для удаления всех дочерних элементов при удалении родителя (то же самое с обновлением).
Я использую go1.11.4 с gorm в качестве ORM и MySQL 5.6
package main
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
type User struct {
gorm.Model
Name string
Child *User `gorm:"Foreignkey:Parent"`
Parent *uint
}
func main() {
db, err := gorm.Open("mysql", "root@/testdb")
if err != nil {
panic("failed to connect database")
}
defer db.Close()
// Migrate the schema
db.AutoMigrate(&User{})
db.Model(&User{}).AddForeignKey("parent","users(id)","CASCADE","CASCADE")
// Create
u := User{Name: "Parent"}
db.Save(&u)
u2 := User{Name: "Child", Parent: &u.ID}
db.Save(&u2)
}
Я получил эту ошибку:
Я обновил этот код, и он наконец-то работает