tags:

views:

421

answers:

2
+2  Q: 

ROWID and RECID

what is ROWID and RECID actually in progress.Can we use the RECID instead of ROWID.what is the diffrrence between them??

+1  A: 

RECID is deprecated, for a couple of versions now. ROWID is the replacement for it. I understand that what it actually returns is the physical address of the DB block containing your record. From memory, they introduced ROWID when they wanted to support different DB engines - Oracle / SQL server et al - from the 4GL, which implies that there is more in a ROWID than a RECID.

I'd stay away from RECID, you might get away with it short term, but you're giving yourself a potential problem that you could avoid altogether.

Gordon Robertson
+5  A: 

Both RECID and ROWID are unique pointers to a specific record in the database.

Both are more-or-less physical pointers into the database itself, except for non-OpenEdge tables where there is no equivalent on the underlying platform. In those cases, it may be comprised of the values making up the primary key.

RECIDs are 32 bit integers up through 10.1A, and were fine when the database was an OpenEdge database and had only one area. From 10.1B forward they were upgraded to 64 bit integers.

In v6 the capacity was added to connect to non-OpenEdge databases, and in v8 to create OpenEdge databases of more than one storage area. At that point, RECIDs were insufficient to address all of the records in a table uniquely in all circumstances.

So the ROWID structure was born. Its actual architecture depends on the type of database underneath, but it does not suffer from the limitations of being an integer.

The documentation is fairly clear in stating that RECIDs should not be used going forward, except for code that manipulates the OpenEdge database metaschema.

lavinio