Ste*_*ser 4 database progress-4gl progress-db
我有一个Progress数据库,我正在执行ETL.我正在读取的其中一个表没有唯一的密钥,因此我需要访问ROWID以便能够唯一地标识该行.访问正在进行的ROWID的语法是什么?
我知道使用ROWID进行行识别存在问题,但这就是我现在所拥有的.
快速回答我的答案 - 自从我与Progress合作已近10年,所以我的知识可能已经过时了.
检查进度语言参考 [PDF]似乎表明我记得的两个功能仍然存在:ROWID和RECID.该ROWID功能更新,是首选.
在进步4GL你会使用这样的东西:
FIND customer WHERE cust-num = 123.
crowid = ROWID(customer).
Run Code Online (Sandbox Code Playgroud)
要么:
FIND customer WHERE ROWID(customer) = crowid EXCLUSIVE-LOCK.
Run Code Online (Sandbox Code Playgroud)
检查进度SQL参考 [PDF]显示ROWID在SQL中也可用作进度扩展.你会这样使用它:
SELECT ROWID, FirstName, LastName FROM customer WHERE cust-num = 123
Run Code Online (Sandbox Code Playgroud)
编辑:按照Stefan的反馈编辑.
根据您的情况和应用程序的行为,这可能或不重要,但您应该知道ROWID和RECID会被重用,并且可能会发生变化.
1)如果记录被删除,它的ROWID最终将被重用.
2)如果通过dump&load或tablemove将表重新组织到新的存储区域,那么ROWID将会改变.
| 归档时间: |
|
| 查看次数: |
5932 次 |
| 最近记录: |