gpt4 book ai didi

go - 如何在GORM库模型中定义引用另一个表ID的外键?

转载 作者:行者123 更新时间:2023-12-01 22:27:53 25 4
gpt4 key购买 nike

我有这三种模式

type Store struct {
Id int `gorm: "type:int;primary_key;AUTO_INCREMENT;NOT NULL;UNIQUE"`
Store_Id string `gorm:"type:varchar(190)";"NOT NULL";"UNIQUE"`
}

type File struct {
Id int `gorm: "type:int;primary_key;AUTO_INCREMENT;NOT NULL;UNIQUE"`
Organization_Id string `gorm:"type:varchar(190)";"NOT NULL"`
File_Id string `gorm:"type:varchar(190)";"NOT NULL";"UNIQUE"`
}

type File_Store_Linker struct {
Id int `gorm: "type:int;primary_key;AUTO_INCREMENT;NOT NULL"`
File_Id string `gorm:"type:varchar(190)";"NOT NULL"`
Store_Id string `gorm:"type:varchar(190)";"NOT NULL"`
File_Type string `gorm:"type:varchar(50)";"NOT NULL"`
}

我想在File_Storage_Linker结构中创建像这样的外键。

create table file_store_linker (
id INT NOT NULL AUTO_INCREMENT,
file_id VARCHAR(190) NOT NULL,
store_id VARCHAR(190) NOT NULL,
file_type VARCHAR(50) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (file_id)
REFERENCES file (file_id),
FOREIGN KEY (store_id)
REFERENCES storage (store_id)
);

怎么做到呢?

最佳答案

我找到了解决方案。实际上,我在外部这样添加了外键。因此,您需要先创建或迁移表,然后添加外键。

type Store struct {
Id int `gorm: "type:int;primary_key;AUTO_INCREMENT;NOT NULL;UNIQUE"`
Store_Id string `gorm:"type:varchar(190)";"NOT NULL";"UNIQUE"`
}

type File struct {
Id int `gorm: "type:int;primary_key;AUTO_INCREMENT;NOT NULL;UNIQUE"`
Organization_Id string `gorm:"type:varchar(190)";"NOT NULL"`
File_Id string `gorm:"type:varchar(190)";"NOT NULL";"UNIQUE"`
}

type File_Store_Linker struct {
Id int `gorm: "type:int;primary_key;AUTO_INCREMENT;NOT NULL"`
File_Id string `gorm:"type:varchar(190)";"NOT NULL"`
Store_Id string `gorm:"type:varchar(190)";"NOT NULL"`
File_Type string `gorm:"type:varchar(50)";"NOT NULL"`
}

func AddForeignKeys(gormDb *gorm.DB) {
gormDb.Model(&File_Store_Linker{}).AddForeignKey("file_id","file(file_id)",
"RESTRICT","RESTRICT")
gormDb.Model(&File_Store_Linker{}).AddForeignKey("store_id","store(store_id)","
RESTRICT","RESTRICT")
}

关于go - 如何在GORM库模型中定义引用另一个表ID的外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58775040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com