2011-09-19 141 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>