을 얻는 방법 ROWID 에서 진행하는 데이터베이스
-
01-07-2019 - |
문제
내가 진행되는 데이터베이스 내가를 수행하 ETL 습니다.테이블 중 하나는 나에서 읽지 않는 고유 키에 그것은,그래서 접근할 필요가 ROWID 수를 고유하게 식별하다.는 무엇입문에 액세스하기 위한 ROWID 진행 중입니까?
내가 이해하는 문제가 있으로 사용하 ROWID 행 식별이지만,그것은 모두가 지금이다.
해결책
빠른주의에 대한 나의 답변-그것은 거의 10 년이와 함께 일 진행 그래서 나는 지식은 아마 보다 더 작은이다.
검사 진 언어 참조 [PDF]는 것을 보면 두 가지 기능을 내가 기억하는 아직 거기: ROWID
고 RECID
.이 ROWID
기능은 새로운 바람직하다.
에서 진행 4GL 다음을 사용할 수 있습니다 그것은 무언가 이것을 좋아한다:
FIND customer WHERE cust-num = 123.
crowid = ROWID(customer).
또:
FIND customer WHERE ROWID(customer) = crowid EXCLUSIVE-LOCK.
검사 진행 SQL 참조 [PDF]보여줍 ROWID
에서도 사용할 수 있는 SQL 로 진행 extension.다음을 사용할 수 있습니다 그것은 그래서 다음과 같:
SELECT ROWID, FirstName, LastName FROM customer WHERE cust-num = 123
편집: 편집의 다음 스테판의 피드백입니다.
다른 팁
상황에 따라과 응용 프로그램의 동작이거나 문제가되지 않을 수 있습니다 하지만 당신이 알고 있어야 하는 ROWIDs&RECIDs 은 재사용하고 있는 그들은 변경될 수 있습니다.
1)면 기록은 삭제하는것은 ROWID 은 결국 다시 사용할 수 있습니다.
2)의 경우 테이블이 개편을 통해 덤프&드 또는 tablemove 새로운 저장소 지역에서 다음 ROWIDs 변경됩니다.
그냥 조금 추가하기 위해 데이브 웹의 답변이 있습니다.려고 했던 ROWID 에서 선택 문이었지만 주어진 구문 오류가 있습니다.ROWID 만 작품을 지정하는 경우 나머지는 열을 선택 사용할 수 없습니다*.
이 작동하지 않습니다.
SELECT ROWID, * FROM customer WHERE cust-num = 123
이동:
SELECT ROWID, FirstName, LastName FROM customer WHERE cust-num = 123
빠른 google 검색로 this:http://bytes.com/forum/thread174440.html
메시지를 읽으로 바닥에 의해 greg@turnstep.com (당신이 원하는 어느 oid 또는 ctid 에 따라 보장을 원하시는 지속성과 독창성)