Duvida entre ROWID e RECID

Discussão em 'Progress 4GL' iniciado por Rogerio, Março 24, 2011.

  1. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    Alguem poderia me dizer qual a diferenca entre ROWID e RECID???

    O que preciso é o seguinte preciso armazenar uma variavel ROWID em uma tabela no banco de dados, mas não existe esse tipo de campo apenas RECID...

    Alguem poderia me dizer como poderia armazenar esse valor???
  2. kirchner

    kirchner Membro Participativo Moderador

    Rogério,

    Se o banco é Progress, praticamente não há diferença. Ambos representam a mesma coisa, mas o RECID te retorna um INTEGER. O ROWID te retorna o mesmo valor em um formato binário, que você pode converter para uma string hexa com a função STRING.
    Quando você usa os DataServers, tem bastante diferença nos valores retornados.

    De qualquer forma, 2 coisas:
    - RECID está ali só para compatibilidade com legado e não deve ser usado. Use sempre ROWID;
    - você provavelmente não quer armazenar este valor no banco de dados :)

    O que eu não entendi é porque você quer gravar isso.
  3. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    Estou querendo criar uma tabela especifica da Temp-table tt-movto para efetuar a transferencia de materiais em outro momento.
  4. kirchner

    kirchner Membro Participativo Moderador

    Bom, você pode criar uma coluna string e salvar STRING(ROWID(tabela)).
    Deve funcionar, mas eu não faria isso.

    O problema é que o RECID/ROWID do OpenEdge refletem a localização física do registro. E isso pode mudar. Dependendo da manutenção que teu DBA fizer no banco de dados, esses valores mudam. Você pode se basear neles durante a execução do programa, mas não deve persistir os valores.

    O correto é sempre utilizar as chaves do registro para localização.
  5. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    Entendi. Muito obrigado, vou pensar numa outra forma.
  6. lhp.s

    lhp.s Membro Participativo

    find tabela-origem where
    rowid(tabela-origem) = rowID-que-voce-tem.

    tabela-que-vc-quer-gravar.campo-recID = recid(tabela-origem).

    Mas se eu fosse voce nao faria isso...vai que em certa ocasião precise fazer um dump-load. Dai voce perde a confialibidade.....

Compartilhe esta Página