2011-09-19 136 views
0

我有一個表personid,具有personID,firstName,lastName,DOB和sex兩列。當我插入每條記錄時,我會用一個序列自動遞增personID列。我需要爲每個插入的記錄添加值,因爲我必須在另一個查詢中發送它。有什麼方法可以在insert語句中使用select語句來檢索值。我無法使用'where',因爲我接受其他列的重複項。所以,每個唯一的人只能通過personID進行標識。我正在使用jdbc API連接到數據庫。有沒有可能在JDBC中進行調用?在SQL的select語句中使用insert

回答

2

不知道這是否有幫助,但如果你使用PL/SQL,您可以使用INTO子句選舉...

例如:

DECLARE 
x emp.empno%TYPE; 
BEGIN 
    INSERT INTO emp 
    (empno, ename) 
    VALUES 
    (seq_emp.NEXTVAL, 'Morgan') 
    RETURNING empno 
    INTO x; 

    dbms_output.put_line(x); 
END; 
/

編號:http://psoug.org/reference/insert.html

+0

我實際上使用jdbc。有沒有可能在JDBC中做到這一點? – Srinivas

+1

是的,並且在接下來的帖子中接受的答案完全是這樣的:http://stackoverflow.com/questions/1976625/value-from-last-inserted-row-in-db –

1

您可以在INSERT聲明中使用RETURNING關鍵字。

INSERT INTO Person (...) VALUES (...) 
RETURNING person_id INTO nbr_id 
0

我覺得NEXTVALCURRVAL應該有所幫助。查看該參考文獻:Sequence Pseudocolumns,最後一個示例(重用序列的當前值)

0

您是否嘗試過OUTPUT命令?

INSERT INTO TableName(FirstName, LastName, DOB, Sex) 
VALUES (<FirstNamei>, <LastNamei>, <DOBi>, <Sexi>) 
OUTPUT inserted.PersonID 
WHERE <Conditions>