Coluna PROGRESS_RECID
Uma das diferenças não visível no Schema Holder Oracle que não pode ser observado pela ferramenta Progress Data Dictionary é a existência do controle aplicado pelo Progress no lado Oracle para manter a compatibilidade em relação ao RECID do Progress.
Observe a estrutura da tabela no lado Oracle, seja por ferramenta gráfica ou simplesmente pelo comando “DESCRIBE” do SQLPLUS, note que o último campo de qualquer tabela no ambiente Datasul corresponde à coluna de nome PROGRESS_RECID.
Ao abrir um arquivo de definição Progress exportado do Schema Holder, note que existe a definição do campo PROGRESS_RECID nas primeiras linhas da definição de cada tabela. Esse será o único lugar onde é apresentada a informação sobre a localização desta coluna no Oracle.
O conteúdo do campo PROGRESS_RECID é um seqüencial recuperado pela consulta no objeto do tipo “SEQUENCE”, onde para cada tabela do produto tem uma seqüência associada e que o seu nome é composto com o nome da tabela terminado com o sufixo “_SEQ”.
É importante ressaltar que não é necessário criar mecanismo via programa que alimente a coluna PROGRESS_RECID quando inserido um registro pelo Progress com Dataserver Oracle, pois o Dataserver realiza a tarefa de ler o valor da seqüência e adiciona no campo para cada registro inserido na tabela.
Como este campo é seqüencial e único, é criado um índice único que o consiste e possui no seu nome a sintaxe padrão com sufixo “##REC”.
Assim, quando aparecer a mensagem Oracle na tela a descrição em português como “Restrição Exclusiva” ou no Inglês como “Unique Contraint” complementado pelo nome do índice onde aparece o sufixo “##REC”, indica houve tentativa de inserir valor existente na coluna PROGRESS_RECID.
Outro ponto interessante é que ao realizar export dos Dados "DUMP" pelo Schema holder via ferramenta “Data Administrator”, o Dataserver não recupera o conteúdo do campo PROGRESS_RECID para dentro do arquivo de texto gerado. Não se preocupe porque o controle é somente para o ambiente Dataserver Oracle. Na importação “LOAD”, o Dataserver fará o controle durante o insert na coluna PROGRESS_RECID.
Para quem programa ou administra o ambiente, comandos como FIND FIRST, FIND PREV, FIND LAST, utilizam diretamente o campo PROGRESS_RECID para seleção dos registros a serem apresentados.
Caso a coluna PROGRESS_RECID não exista, é porque outra coluna da tabela foi eleita como identificador único ao gerar o Schema Holder pelo Dataserver Oracle.