从ODBC Openedge 10.2B确定主键

时间:2015-01-07 17:19:27

标签: yii2 progress-4gl openedge progress-db

我目前正在为Yii2实现一个ActiveRecord驱动程序,这样我就可以通过推荐的API在我的Yii应用程序中利用我的进度数据库。但是,因为在ActiveRecord中需要设置主键才能正常工作(它必须知道哪些字段是记录的唯一标识符),所以我会在我创建的每个模型类上手动设置这些字段。 (可以在https://github.com/ExchangeCore/yii2-progress-driver/tree/10.2.x

查看驱动程序

我想知道的是,我是否忽略了一些可能实际上具有哪些字段是主键的方法或SYSPROGRESS表(或其他ODBC函数)。我对SYSINDEXES表有一些希望,但我不确定如何正确识别哪个索引是主键。

2 个答案:

答案 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的记录。