第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用自動遷移刪除未使用的列

使用自動遷移刪除未使用的列

Go
慕桂英3389331 2022-08-01 15:27:36
我已經(jīng)開始與夢幻般的圖書館GORM合作。自動遷移工作完美,但在文檔中,我閱讀了注釋“它不會刪除未使用的列以保護您的數(shù)據(jù)”。我可以跳過此規(guī)則嗎?換句話說,我是否可以在gorm配置中添加/更改某些內(nèi)容,以便有機會使用自動遷移刪除未使用的列?
查看完整描述

2 回答

?
慕的地10843

TA貢獻1785條經(jīng)驗 獲得超8個贊

你可以這樣寫一個函數(shù):


func DropUnusedColumns(dst interface{}) {


    stmt := &gorm.Statement{DB: DB}

    stmt.Parse(dst)

    fields := stmt.Schema.Fields

    columns, _ := DB.Debug().Migrator().ColumnTypes(dst)


    for i := range columns {

        found := false

        for j := range fields {

            if columns[i].Name() == fields[j].DBName {

                found = true

                break

            }

        }

        if !found {

            DB.Migrator().DropColumn(dst, columns[i].Name())

        }

    }

}

用法:


DropUnusedColumns(&User{})


查看完整回答
反對 回復(fù) 2022-08-01
?
寶慕林4294392

TA貢獻2021條經(jīng)驗 獲得超8個贊

不,我不認為有一個簡單的選擇來做到這一點。

以下是自動遷移源:https://github.com/go-gorm/gorm/blob/59730417aabd5b510d66d9d923d265a6fc0195a0/migrator/migrator.go#L83-L153

您需要枚舉表上的所有列,檢查它們是否存在,然后將其刪除。

您還需要枚舉現(xiàn)有關(guān)系和索引,如果它們不存在,則根據(jù)需要將其刪除。

如果你最終寫了它,我認為你可以編寫自己的函數(shù),該函數(shù)采用接口并運行自動遷移??梢栽诂F(xiàn)有代碼中獲取遷移器接口,并將其傳遞給函數(shù)。也許有人在某個地方寫了這樣的函數(shù)!AutoMigrategorm.Migratordb.Migrator()


查看完整回答
反對 回復(fù) 2022-08-01
  • 2 回答
  • 0 關(guān)注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號