Insert

如何將記錄插入到依賴於連結到前一個表的外鍵的表中?

  • December 2, 2019

這個問題開始。我有一個用 XML 編寫的字典文件。我在 VB.NET 中編寫了一個程序來解析這個文件並將所有數據儲存在 Class 對像中,現在我想編寫一個子常式將所有這些數據插入 Access 數據庫。我正在努力解決如何對INSERT所有數據使用 SQL。

有 20 個表,主表稱為Entry,所有其他表都連結回該表。為了給出資料結構的簡化範例,還有一個Keyword表,它連結回Entry. 還有一個Keyword_Priority表,它連結回Keyword. 兩種關係都是一對多的,如下所示:

在此處輸入圖像描述

我的問題

我可以INSERTEntry錶使用 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 */

引用自:https://dba.stackexchange.com/questions/254520