객체 식별자 (OID)는 내부적으로 사용됩니다PostgreSQL다양한 시스템 테이블의 기본 키로. 와이즈 토토OID
객체 식별자를 나타냅니다. 에 대한 몇 가지 별칭 와이즈 토토도 있습니다.OID
, 각각 명명 된Reg
. 표 8.26개요 표시.뭔가
theOID
와이즈 토토은 현재 서명되지 않은 4 바이트 정수로 구현되었습니다. 따라서 대형 데이터베이스 또는 대형 개별 테이블에서 데이터베이스 전체 고유성을 제공하기에 충분히 크지 않습니다.
theOID
와이즈 토토 자체는 비교 이상으로 작업이 거의 없습니다. 그러나 정수로 캐스트 한 다음 표준 정수 연산자를 사용하여 조작 할 수 있습니다.
OID 별칭 유형은 특수 입력 및 출력 루틴을 제외하고는 자체 작업이 없습니다. 이 루틴은 유형의 원시 숫자 값보다는 시스템 객체에 대한 상징적 이름을 수락하고 표시 할 수 있습니다OID
사용합니다. 별칭 유형은 객체에 대한 OID 값을 단순화 할 수 있습니다.PG_ATTRIBUT
표와 관련된 행mytable
, 하나는 다음을 쓸 수 있습니다 :
선택 *에서 pg_attribute에서 attrelid = 'mytable':: regclass;
대신 :
pg_attribute에서 * 선택 *
그 자체로는 그렇게 나쁘게 보이지는 않지만 여전히 지나치게 단순화되었습니다. 이름이 여러 개의 테이블이있는 경우 올바른 OID를 선택하려면 훨씬 더 복잡한 하위 선택이 필요합니다.mytable
다른 스키마에서. 그만큼Regclass
입력 변환기는 스키마 경로 설정에 따라 테이블 조회를 처리하므로“올바른 것”자동으로. 마찬가지로, 테이블의 OID를 캐스팅Regclass
숫자의 상징적 인 디스플레이에 편리합니다.
표 8.26. 객체 식별자 유형
이름 | 참조 | 설명 | 값 예제 |
---|---|---|---|
OID |
Any | 숫자 객체 식별자 | 564182 |
Regclass |
PG_CLASS |
관계 이름 | pg_type |
RegCollation |
PG_COLLATION |
Collation Name | "posix" |
RegConfig |
PG_TS_CONFIG |
텍스트 검색 구성 | 영어 |
RegDictionary |
PG_TS_DICT |
텍스트 검색 사전 | 단순 |
regnamespace |
pg_namespace |
네임 스페이스 이름 | PG_CATALOG |
Regoper |
pg_operator |
운영자 이름 | + |
Regoperator |
pg_operator |
인수 와이즈 토토이있는 연산자 | *(정수, 정수) 또는-(없음, 정수) |
Regproc |
PG_PROC |
기능 이름 | Sum |
Regrocedure |
PG_PROC |
인수 와이즈 토토이있는 함수 | sum (int4) |
Resprole |
pg_authid |
역할 이름 | Smithee |
Regtype |
pg_type |
데이터 유형 이름 | Integer |
네임 스페이스로 그룹화 된 오브젝트의 모든 OID 별칭 유형은 스키마 자격 이름을 수락하고 자격을 갖추지 않고 현재 검색 경로에서 객체를 찾을 수없는 경우 출력에 스키마 자격 이름을 표시합니다. 예를 들어,myschema.mytable
허용 가능한 입력에 대한 입력Regclass
(테이블이있는 경우). 그 값은로 출력 될 수 있습니다.myschema.mytable
또는 그냥mytable
15965_16008Regproc
andRegoper
별칭 유형은 고유 한 입력 이름 만 (과부하되지 않음) 만 허용되므로 사용이 제한되어 있습니다. 대부분의 용도Regrocedure
또는Regoperator
더 적합합니다. 을 위한Regoperator
, 단독 운영자는 서면으로 식별됩니다없음
사용하지 않은 피연산자.
이러한 유형의 입력 함수는 토큰 사이의 공백을 허용하며, 이중 인용문을 제외하고는 상단 문자를 소문자로 접습니다. 이는 구문 규칙이 객체 이름이 SQL로 작성되는 방식과 유사하게 만들기 위해 수행됩니다.foo
(대문자 포함F
) 두 개의 정수 인수를 취하는 것은로 입력 할 수 있습니다.' "foo"(int, integer) ':: regprocedure
. 출력은"foo"(정수, 정수)
. 함수 이름과 인수 유형 이름도 스키마 자격을 갖추게 될 수 있습니다.
많은 내장PostgreSQL함수는 테이블의 OID 또는 다른 종류의 데이터베이스 개체를 수락하고 편의상 취득으로 선언됩니다Regclass
(또는 적절한 OID 별칭 유형). 이것은 당신이 객체의 OID를 손으로 볼 필요가 없지만 문자열 문자로 이름을 입력 할 수 있음을 의미합니다.NextVal (regclass)
함수는 시퀀스 관계의 OID를 취하므로 다음과 같이 부를 수 있습니다.
NextVal ( 'foo')시퀀스에서 작동foo
NextVal ( 'foo')위와 동일NextVal ( ' "foo"')시퀀스에서 작동foo
NextVal ( 'myschema.foo')운영foo
NextVal ( ' "myschema".foo')위와 동일NextVal ( 'foo')검색 경로 검색foo
당신이 그러한 함수의 논증과 같은 문자 그대로의 문자열을 쓸 때, 그것은 와이즈 토토의 상수가됩니다Regclass
(또는 적절한 유형). 이것은 실제로 OID 일 뿐이므로 나중에 이름을 바꾸는 객체를 추적합니다. 나중에 변경, 스키마 재 할당 등.“초기 바인딩”행동은 일반적으로 열 기본값 및보기에서 객체 참조에 바람직합니다. 하지만 때로는 원할 수도 있습니다“늦은 바인딩”객체 참조가 실행 시간에 해결되는 곳. 늦은 바인딩 행동을 얻으려면 상수가 A로 저장되도록 강제로텍스트
대신 상수Regclass
:
NextVal ( 'foo':: text)foo
런타임을 찾아 보았습니다
theto_regclass ()
함수와 형제 자매를 사용하여 런타임 조회를 수행 할 수도 있습니다. 보다표 9.74.
사용의 또 다른 실용적인 예Regclass
|Information_Schema
그러한 OID를 직접 공급하지 않는보기. 예를 들어를 호출하기를 원할 수도 있습니다.pg_relation_size ()
함수. 테이블 OID가 필요합니다. 위의 규칙을 고려하면 올바른 방법은입니다.
table_schema, table_name, table_schema,
thequote_ident ()
함수는 필요한 경우 식별자를 두 배로 인용해야합니다. 겉보기 쉬운
선택 PG_RELATION_SIZE (TABLE_NAME)
is권장되지 않음, 검색 경로 외부에 있거나 인용 해야하는 이름이있는 테이블에 실패하기 때문에.
대부분의 OID 별칭 유형의 추가 속성은 종속성을 만드는 것입니다. 이러한 유형 중 하나의 상수가 저장된 표현식 (예 : 열 기본 표현식 또는보기)에 나타나면 참조 된 객체에 대한 종속성을 만듭니다.NextVal ( 'my_seq':: regclass)
, PostgreSQL기본 표현식이 시퀀스에 따라 다르다는 것을 이해합니다.my_seq
, 따라서 기본 표현식을 먼저 제거하지 않고도 시스템이 시퀀스를 삭제하지 못하게합니다. 의 대안NextVal ( 'my_seq':: text)
의존성을 생성하지 않습니다. (Resprole
는이 속성에 대한 예외입니다. 이 와이즈 토토의 상수는 저장된 표현식에서 허용되지 않습니다.)
시스템에서 사용하는 다른 식별자 와이즈 토토은xid
또는 거래 (약어xact) 식별자. 이것은 시스템 열의 데이터 와이즈 토토입니다xmin
andxmax
. 거래 식별자는 32 비트 수량입니다.XID8
사용됩니다. 같지 않은xid
값,XID8
값은 엄격하게 단조롭게 증가하며 데이터베이스 클러스터의 수명에서 재사용 할 수 없습니다. 보다섹션 66.1자세한 내용은
시스템에서 사용하는 세 번째 식별자 와이즈 토토은CID
또는 명령 식별자. 이것은 시스템 열의 데이터 유형입니다cmin
andcmax
. 명령 식별자도 32 비트 수량입니다.
시스템에서 사용하는 최종 식별자 와이즈 토토은TID
또는 튜플 식별자 (행 식별자). 이것은 시스템 열의 데이터 유형입니다CTID
. 튜플 ID는 테이블 내의 행의 물리적 위치를 식별하는 쌍 (블록 번호, 블록 내 튜플 인덱스)입니다.
(시스템 열은 자세히 설명되어섹션 5.6.)
올바른 문서에 아무것도 표시되면 일치하지 않습니다.이 양식문서 문제를보고하려면