Insert
如何將記錄插入到依賴於連結到前一個表的外鍵的表中?
從這個問題開始。我有一個用 XML 編寫的字典文件。我在 VB.NET 中編寫了一個程序來解析這個文件並將所有數據儲存在 Class 對像中,現在我想編寫一個子常式將所有這些數據插入 Access 數據庫。我正在努力解決如何對
INSERT
所有數據使用 SQL。有 20 個表,主表稱為
Entry
,所有其他表都連結回該表。為了給出資料結構的簡化範例,還有一個Keyword
表,它連結回Entry
. 還有一個Keyword_Priority
表,它連結回Keyword
. 兩種關係都是一對多的,如下所示:我的問題
我可以
INSERT
對Entry
錶使用 SQL 來創建一條記錄。但是我將如何為表創建一條記錄,引用我剛剛創建Keyword
的記錄的主鍵?Entry
然後我將如何創建記錄Keyword_Priority
,引用Keyword
記錄?等等。這一切都將通過 VB.NET 完成——我不能使用 Forms,因為要輸入 180,000 多個條目。有什麼方法可以在 SQL 中儲存一個變數,我以後可以參考?
你也可以像這裡一樣https://stackoverflow.com/questions/4135437/get-last-insert-id-from-access
通過使用@@identity
select @@IDENTITY
這將為數據庫連接返回最新創建的 ID
或者利用大多數 id 列只是增加 int 值的“入站”屬性 - 所以
select max(id) from Entry
INSERT INTO Entry (EntrySequence) VALUES ('new EntrySequence'); INSERT INTO Keyword (Keyword, EntryFK) SELECT 'new Keyword', Entry.EntryID FROM Entry WHERE Entry.EntrySequence = 'new EntrySequence'; INSERT INTO Keyword_Priority (KeywordPriority, KeywordFK) SELECT 'new KeywordPriority', Keyword.Id FROM Keyword /* , Entry */ WHERE Keyword.Keyword = 'new Keyword' /* AND Entry.EntrySequence = 'new EntrySequence' AND Entry.EntryID = Keyword.EntryFK */