> 백엔드 개발 > Golang > GORM에서 외래 키 제약 조건을 정의하고 사용하는 방법은 무엇입니까?

GORM에서 외래 키 제약 조건을 정의하고 사용하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-13 06:12:19
원래의
792명이 탐색했습니다.

How to Define and Use Foreign Key Constraints in GORM?

GORM에서 외래 키 제약 조건을 어떻게 정의하고 사용하나요?

데이터베이스 설계 영역에서 외래 키는 관계를 설정하고 데이터 무결성을 유지하는 데 중요한 역할을 합니다. . GORM 사용자의 경우 외래 키 제약 조건을 정의하고 사용하는 방법을 이해하는 것이 필수적입니다.

문제 이해

질문에 설명된 시나리오를 고려하면 User와 UserInfo라는 두 가지 모델이 있습니다. UserInfo의 UID 필드와 User의 id 필드 사이에 외래 키 관계를 설정해야 합니다.

GORM의 외래 키 생성

GORM 2.0 이전 버전에서는 외래 키를 수동으로 정의해야 했습니다. AddForeignKey 메서드를 사용하여 키 제약 조건을 적용합니다. GORM 2.0 이상에서는 이 단계가 더 이상 필요하지 않습니다.

// GORM version 1.x
db.Model(&models.UserInfo{}).AddForeignKey("u_id", "t_user(id)", "RESTRICT", "RESTRICT")
로그인 후 복사

자동 외래 키 정의

그러나 이전 버전의 GORM에서는 여전히 아래와 같이 외래 키를 정의할 수 있습니다.

type User struct {
    DBBase
    Email    string `gorm:"column:email" json:"email"`
    Password string `gorm:"column:password" json:"-"`
}

func (User) TableName() string {
    return "t_user"
}

type UserInfo struct {
    User      User   `gorm:"foreignkey:u_id;association_foreignkey:id"`
    UID       uint   `gorm:"column:u_id" json:"-"`
    FirstName string `gorm:"column:first_name" json:"first_name"`
    LastName  string `gorm:"column:last_name" json:"last_name"`
    Phone     string `gorm:"column:phone" json:"phone"`
    Address   string `gorm:"column:address" json:"address"`
}

func (UserInfo) TableName() string {
    return "t_user_info"
}
로그인 후 복사

이 예에서는 외래 키 관계 menggunakan을 정의합니다. gorm:"foreignkey:..." 및 gorm:"association_foreignkey:..." 주석.

코드에서 외래 키 값 설정

다음으로 외래 키 값 설정 문제를 다루겠습니다. 바르게. 제공된 코드에서:

func (dao *AuthDAO) Register(rs app.RequestScope, user *models.User, userInfo *models.UserInfo) (userErr error, userInfoErr error) {
    createUser := rs.Db().Create(&user)
    userInfo.UID = user.ID
    createUserInfo := rs.Db().Create(&userInfo)

    return createUser.Error, createUserInfo.Error
}
로그인 후 복사

User 인스턴스를 생성한 후 userInfo.UID를 user.ID로 설정합니다. 이 접근 방식은 유효하며 외래 키 관계를 올바르게 설정합니다.

결론적으로, 외래 키 관계와 GORM의 구현을 이해하는 것은 데이터베이스 기반 애플리케이션에서 데이터 무결성을 유지하는 데 중요합니다. 제안된 솔루션과 주석을 따르면 GORM 모델에서 외래 키 제약 조건을 효과적으로 정의하고 활용할 수 있습니다.

위 내용은 GORM에서 외래 키 제약 조건을 정의하고 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿