Oracle의 "Rowid"의사 콜럼의 개념을 가진 오픈 소스 SQL 데이터베이스가 있습니까?
문제
나는 mysql과 postgresql [1] do를 알고 있습니다. ~ 아니다 그 개념을 가지고 있으므로 개념이있는 오픈 소스 SQL 데이터베이스가 있음을 찾는 데 관심이 있습니다.
1] PostgreSQL에는 rowid pseudo-colum이 있다는 것이 나중에 지적되었다.
해결책
PostgreSQL
이 개념이 있습니다.
보다 여기 Pseudocolumns의 간단한 목록 PostgreSQL
, 그 중 ctid
당신에게 관심이 있습니다 :
ctid (tuple identifier)
데이터베이스 내 튜플의 물리적 위치를 설명하는 식별자. 한 쌍의 숫자는 CTID : 블록 번호 및 해당 블록 내의 튜플 인덱스로 표시됩니다.
그것은 직접적인 아날로그입니다 Oracle
'에스 rowid
.
에 관해서 MySQL
, 프론트 엔드에는 행의 물리적 위치를 사용할 수 없습니다.
~ 안에 MyISAM
, rowid
처음부터 파일 오프셋 일 뿐이며 인덱스 잎에 저장된 것입니다.
~ 안에 InnoDB
, 테이블입니다 index organized
디자인으로, 그것은 항상 어떤 종류의 주요 키가 있고, 인덱스는 InnoDB
테이블을 사용합니다 PRIMARY KEY
행 포인터로.
이것은 또한 사실입니다 Oracle
'에스 index organized
테이블 rowid
데이터 파일의 블록에 대한 물리적 포인터가 아니라 오히려 logical ROWID
, 또는 UROWID
a를 선택한 경우 ROWID
an INDEX ORGANIZED
테이블에 Oracle
, 당신은 그것이 다른 형식을 가지고 있음을 알 수 있습니다 ( *BAEBwPICwQL+
). 이것은 실제로 인코딩 된 것입니다 PRIMARY KEY
값.
열을 다음으로 정의하지 않은 경우 PRIMARY KEY
, MySQL
숨겨진 대리를 만들 것입니다 PRIMARY KEY
당신은 어떤 통제도하지 않을 것입니다.
그래서 당신은 항상 일종의 PRIMARY KEY
에서 InnoDB
표 : 무료이며 열을 제어 할 수 있습니다.
다른 팁
그들 중 누구도 그렇게하지 않았다면 다른 사람은하지 않습니다.
sqlite에는 rowid, _rowid 또는 oid를 사용하여 액세스 할 수있는 자동 증분 "rowid"열이 있습니다. 정수 기본 키를 정의하는 경우 별명보다.