![](/img/trans.png)
[英]How to get User Id (Rowid) from SQLite Database and show it in TextView (Android)
[英]How to get the ROWID from a Progress database
我有一个Progress数据库,我正在执行ETL。 我正在读取的其中一个表没有唯一的密钥,因此我需要访问ROWID以便能够唯一地标识该行。 访问正在进行的ROWID的语法是什么?
我知道使用ROWID进行行识别存在问题,但这就是我现在所拥有的。
快速回答我的答案 - 自从我与Progress合作已近10年,所以我的知识可能已经过时了。
检查进度语言参考 [PDF]似乎显示我记得的两个函数仍然存在: ROWID
和RECID
。 ROWID
功能更新,是首选。
在进步4GL你会使用这样的东西:
FIND customer WHERE cust-num = 123.
crowid = ROWID(customer).
要么:
FIND customer WHERE ROWID(customer) = crowid EXCLUSIVE-LOCK.
检查进度SQL参考 [PDF]显示ROWID
在SQL中也可用作进度扩展。 你会这样使用它:
SELECT ROWID, FirstName, LastName FROM customer WHERE cust-num = 123
编辑:按照Stefan的反馈编辑。
根据您的情况和应用程序的行为,这可能或不重要,但您应该知道ROWID和RECID会被重用,并且可能会发生变化。
1)如果记录被删除,它的ROWID最终将被重用。
2)如果通过dump&load或tablemove将表重新组织到新的存储区域,那么ROWID将会改变。
只是为Dave Webb的答案添加一点。 我在select语句中尝试过ROWID,但是语法错误。 ROWID仅在您指定要选择的其余列时才有效,您不能使用*。
这不起作用:
SELECT ROWID, * FROM customer WHERE cust-num = 123
这确实有效:
SELECT ROWID, FirstName, LastName FROM customer WHERE cust-num = 123
一个快速的谷歌搜索出现了这个: http : //bytes.com/forum/thread174440.html
通过greg@turnstep.com阅读底部的消息(您要么想要oid还是ctid,具体取决于您希望再保持和唯一性的保证)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.