我目前正在为Yii2实现一个ActiveRecord驱动程序,这样我就可以通过推荐的API在我的Yii应用程序中利用我的进度数据库。但是,因为在ActiveRecord中需要设置主键才能正常工作(它必须知道哪些字段是记录的唯一标识符),所以我会在我创建的每个模型类上手动设置这些字段。 (可以在https://github.com/ExchangeCore/yii2-progress-driver/tree/10.2.x)
查看驱动程序我想知道的是,我是否忽略了一些可能实际上具有哪些字段是主键的方法或SYSPROGRESS表(或其他ODBC函数)。我对SYSINDEXES表有一些希望,但我不确定如何正确识别哪个索引是主键。
答案 0 :(得分:1)
_file._prime-index是_index记录的RECID,用于描述标记为" primary"的索引。
它可能是,也可能不是唯一的(这不是一个要求)。
我不是一个SQL人(也不是我在电视上播放一个),但是这个4GL代码会找到"活动的主要索引。 table(如果你有这样的表),告诉你它是否是唯一的并列出构成索引的字段:
find _file no-lock where _file-name = "activity".
find _index no-lock where recid( _index ) = _file._prime-index no-error.
if available _index then
do:
display _index._unique.
for each _index-field no-lock where _index-field._index-recid = recid( _index ):
find _field no-lock where recid( _field ) = _index-field._field-recid.
display _field-name.
end.
end.
答案 1 :(得分:0)
进度数据库没有“主键” - 您最接近PK的是在该表上使用唯一索引。
如果您在_Index表中查找给定的_File._file-name,则需要_Unique为true的记录。