簡體   English   中英

我似乎無法讓外鍵在SQLite.swift中工作

[英]I can't seem to get foreign keys to work in SQLite.swift

我遇到了一個困擾我一段時間的問題,我想我終於可以解決這個問題了。 由於某種原因,我似乎無法讓外鍵在SQLite.swift / SQLite中工作(我無法弄清楚是在濫用庫還是在總體上誤解了SQLite)。 我正在嘗試使用級聯刪除功能,感覺好像我已正確設置了所有內容,但是它不起作用。

讓我確保首先清楚我的理解。 我有一個父表“ Categories”和一個子表“ Subcategories”,它是子表“ Transactions”的父表。 子類別具有與類別的“ id”行相關的“ category_id”行,外鍵在刪除時級聯。 事務具有與子類別的“ id”行相關的“ subcategory_id”行,外鍵在刪除時設置為空。 當我從“類別”中刪除一行時,也應刪除“子類別”中具有該類別ID的任何行,並且“交易”中具有該子類別ID的任何行應將“子類別ID”字段設置為null。 那是對的嗎?

我將所有SQLite東西都放在一個類中處理。 這是與創建子類別表有關的代碼片段,我在其中創建了外鍵:

do {
    try db!.run(subcategories.create(ifNotExists: true) { table in
        table.column(id, primaryKey: .autoincrement)
        table.column(name, defaultValue: "New Subcategory")
        table.column(sort)
        table.column(category_id)
        table.column(budget_id)
        table.foreignKey(category_id, references: categories, id, update: .cascade, delete: .cascade)
        table.foreignKey(budget_id, references: budgets, id, update: .cascade, delete: .cascade)
    })
} catch {
    print("SQLite: Unable to create 'Subcategories' table")
}

這是該類的完整代碼。

如果任何人都能發現我在這里做錯了什么,我會給你我的長子(或者至少是謝謝)。

我最終在這里找到答案,這實際上與未啟用鍵有關。

https://github.com/stephencelis/SQLite.swift/issues/757

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM