2011-08-27 5 views
1

을 생성 얻을, 나는베이스 JDBC는 포스트 그레스에서 키

INSERT .. RETURNING * 

는 삽입시 발생되었던 모든 값을 검색하려면 쓸 수 있습니다. 오라클, HSQLDB에서 사용할 수 있습니다

String[] columnNames = ... 
PreparedStatement stmt = connection.prepareStatement(sql, columnNames); 
// ... 
stmt.execute(); 
stmt.getGeneratedKeys(); 

생성 된 모든 값을 검색하려면 다음을 수행하십시오. MySQL은 조금 제한되어 있으며 AUTO_INCREMENT으로 설정된 열만 반환합니다. 그러나 Sybase SQL Anywhere로 어떻게이 작업을 수행 할 수 있습니까? JDBC 드라이버는 이러한 메소드를 구현하지 않으며 Postgres에서와 같이 INSERT .. RETURNING 절이 없습니다. 어쩌면 실행하는 것 이외의 방법이 있습니까

SELECT @@identity 

삽입 직후입니까?

답변

1

내 현재 구현 연속 3 SQL 문 실행 : 단지 ID 열이

를 요청하면 세 번째 문을 생략 할 수있다

-- insert the data first 
INSERT INTO .. VALUES (..) 

-- get the generated identity value immediately afterwards 
SELECT @@identity 

-- get the remaining values from the record (possibly generated by a trigger) 
SELECT * FROM .. WHERE ID = :previous_identity