내가 쿼리 실행 테이블 스키마 변경의 역사를 얻으려면 해석하는 방법 다음
select CAST(SUBSTRING(f.rdb$descriptor FROM 1 FOR 32000) AS VARCHAR(32000)) log
from rdb$formats f
join rdb$relations r on r.rdb$relation_id = f.rdb$relation_id
where r.rdb$relation_name = 'MY_TABLE_NAME'
Documentation 상태 :
을 생성 된 시간이었다로, BLOB로 속성을 쿼리의 결과입니다RDB의 $ 기술자를 | BLOB FORMAT | 저장 열 이름 및 데이터들은 포맷의 기록은 다음
LOG TABLE FORMAT ID
------------------------------------------------- ----------------
4: type=9 (LONG) length=4 sub_type=0 flags=0x0 15
8: type=9 (LONG) length=4 sub_type=0 flags=0x0
12: type=14 (DATE) length=4 sub_type=0 flags=0x0
16: type=9 (LONG) length=4 sub_type=0 flags=0x0
20: type=9 (LONG) length=4 sub_type=0 flags=0x0
24 <-- probably truncated?
------------------------------------------------- ----------------
4: type=9 (LONG) length=4 sub_type=0 flags=0x0 16
8: type=3 (VARCHAR) length=12 sub_type=52 flags=0x0
20: type=14 (DATE) length=4 sub_type=0 flags=0x0
24: type=9 (LONG) length=4 sub_type=0 flags=0x0
28: type=9 (LONG) length=4 sub_type=0 flags=0x0
이벤트의 28 행에 있습니다 테이블의 합계입니다. 하지만, 28 좋아요 숫자 4, 8, 12, 16, 20, 24, 뒤의 의미를 이해의 다음과 같은 쿼리를 발행 할 수 없습니다
: 여기
SELECT
RF.RDB$FIELD_POSITION,
RF.RDB$FIELD_ID,
F.RDB$FIELD_TYPE,
F.RDB$FIELD_SUB_TYPE
FROM RDB$RELATION_FIELDS RF
JOIN RDB$FIELDS F ON (F.RDB$FIELD_NAME = RF.RDB$FIELD_SOURCE)
WHERE RF.RDB$RELATION_NAME = 'MY_TABLE_NAME'
ORDER BY RF.RDB$FIELD_POSITION;
그리고 것은 결과입니다 당신은 어느 위치, 난 단지 22 열이 볼 수 있듯이
도 ID 위의 로그에서 24/28 키를 일치시킬 수 있습니다.
또 다른 결과는 로그에 sub_type=52
과 함께 type=3 (VARCHAR)
이 있고 반면에 37은 VARCHAR의 코드입니다.
현재 무슨 일입니까? 어떻게 해석합니까?
질문 당 하나의 질문에 자신을 제한하십시오, 아리옥 '는 대답했다 질문 ,하지만 하위 형식에 대한 귀하의 질문은 정말 별도의 질문이 있어야합니다. –
W.R.T. 마지막 질의에'RDB $ RELATIONS.RDB $ FORMAT' 필드를 추가하십시오. –
한 가지 더 제안 : IBExpert의 "Database Inside"- FDB 파일의 내장 파서를 사용하십시오. 특히 데이터 페이지의 시작 부분에 다른 형식 ID가있는 관심있는 테이블 행을 찾을 수 있습니다. 더 오래된 행이 더 많이 남아있을 수 있습니다. 그런 다음 다른 형식 ID로 행을 열고 데이터 레이아웃 및 설명을 확인하십시오. –