以下是我正在嘗試執行的操作。我有一個Java程序,將遙測流分解成各個原始字段。我將這些原始字段值傳遞給MySQL表,其中每列是其中一個字段。在這個數據庫中,我也有一個觀點,它抓住所有的遙測數據,並根據原始數據計算一些新的派生列(例如原始計數到工程單位)。在我的Java程序中,插入後我想從VIEW中獲取相應的行(raw + derived)並將這些數據傳遞到別處。檢索由觸發器生成的主鍵(Java)
最初我以爲我可以簡單地將原始數據插入到VIEW中,並將行返回給我在Java程序中的ResultSet中。不幸的是,數據不會在ResultSet中返回。
我現在試圖做的是將原始數據插入表(這部分工作),獲取主鍵,然後從VIEW查找行。我正在努力的部分是從INSERT中檢索主鍵。我使用從Connection對象生成的PreparedStatement,併爲它提供Statement.RETURN_GENERATED_KEYS。但是,當我在調用executeUpdate()之後在我的語句上調用getGeneratedKeys()時,我的ResultSet始終爲空。我可以看到它在行中插入行時......我做錯了什麼?
如果主鍵是通過觸發器生成的,我能否以這種方式檢索生成的主鍵?
更新:我已經嘗試使用主鍵列的名稱換出Statement.RETURN_GENERATED_KEYS作爲String數組,但這似乎也不起作用。
對於不包括我的代碼,我很抱歉,但這樣做對我來說很難。我試圖用自己的能力來描述自己在做什麼。
我想避免不得不訴諸存儲過程看似簡單的東西。儘管如此,SP始終是一種選擇。如果我要走這條路線,我應該從VIEW輸出行,而不僅僅是主鍵,因爲我使用的只是檢索所述行。 – celestialorb
從頭開始我在上面說過。我不想使用存儲過程,因爲所討論的表有數百個列。我寧願不創建一個有很多參數的SP。 – celestialorb
我聽到你說的那個。另一個解決方案可能是在代碼中創建一個uid。插入表格。作爲額外的列。然後通過uid退回 – DaveTheRave