为什么密钥不是唯一的?

2020-08-17 21:43发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好 我已经创建了如下的CD...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好

我已经创建了如下的CDS视图:

定义视图YGAC_I_SINGLE_COMPOSITE_ROLE
   带参数
    pm_role2:grac_roleid
   从YGAC_I_ROLE_RS中选择
   关联[1..1]与_Connection.RefRoleId = $ projection.RoleId2上的_Connection到YGAC_I_ROLE_CONNECTION
   关联[1..1]到YGAC_I_ROLE,作为_Role.RoleId = $ projection.RoleId2上的_Role
 {
    关键RoleId2,
    RelationType,
    _Connection [inner] .Connector,
    _Role [inner] .RoleName,
    _Role [inner] .RoleId,
    _连接,
    _角色
 },其中YGAC_I_ROLE_RS.RoleId2 = $ parameters.pm_role2 

编译器显示警告:

关联_CONNECTION的基数1与打开条件ygac_i_single_composite_role.asddls/DA4_010_i0000168_en/.adt/ddic/ddlsources/ygac_i_single_composite_role/ygac_i_single_APposittaxs不匹配。

 YGAC_I_SINGLE_COMPOSITE_ROLE的键定义和YGAC_I_ROLE_RS的键定义是不同的,YGAC_I_SINGLE_COMPOSITE_ROLE的键中缺少ROLEID1 ygac_i_single_composite_role.asddls/DA4_010_i0000__y_ro_single_posite_roys_posite_roys_acle_posite_role_acly_posite_role_ac_yle_ac_yle_ac_yle_ac_yle_posite_acro_posite_role_ac_yle_ac_yle_acly_a_lei_roy_aclys_a_leed_a_leed_a_leed_a_leed_a_e_leas_a_leed_a_e_leas_a_lede_a
 

当我启动数据预览编辑器时,它显示:

如您所见,我在RoleId2列上有键重复尽管 列RoleId2定义为您的主键。

所以也许YGAC_I_ROLE_CONNECTION视图是造成该问题的原因,因为该关联

将[1..1]与YGAC_I_ROLE_CONNECTION关联为_Connection.RefRoleId = $ projection.RoleId2上的_Connection 

与YGAC_I_ROLE_CONNECTION上的主键无关:

定义视图YGAC_I_ROLE_CONNECTION
   从gracrlconn中选择
 {
   关键role_id作为RoleId,
       连接器作为连接器,
       将role_name作为RoleName,
       ac_ref_role_id作为RefRoleId,
       Updated_on为UpdatedOn,
       排除为排除
 } 

如何强制列RoleId2唯一?

谢谢

(32.8 kB)
4条回答
me_for_i
2020-08-17 21:57

我对CDS视图有点了解,它是如何工作的。

考虑以下示例:

定义视图YGAC_I_SINGLE_COMPOSITE_ROLE
   带参数
    pm_role2:grac_roleid
   从YGAC_I_ROLE_RS中选择
   关联[1..1]到YGAC_I_ROLE,作为_Role.RoleId = $ projection.RoleId2上的_Role
 {
    关键RoleId2,
    RelationType,
    _Role.RoleName,
    _Role.RoleId
    _角色
 },其中YGAC_I_ROLE_RS.RoleId2 = $ parameters.pm_role2 

结果,我得到了:

再次,尽管我已将其定义为主键,但" RoleId2"列并不是唯一的。

YGAC_I_ROLE_RS的定义是:

将视图YGAC_I_ROLE_RS定义为gracrolerelat {
     关键roleid1作为RoleId1,
     关键roleid2作为RoleId2,
     relat_type作为RelationType
 } 

和YGAC_I_ROLE

定义视图YGAC_I_ROLE
   从gracrole中选择
 {
   关键角色ID为RoleId,
       将role_name作为RoleName,
       connector_grp作为ConnectorGroup,
       role_type作为RoleType,
       bproc作为BusinessProcess,
       bsubproc作为SubProcess,
       prjrel作为ProjectRelease,
       批判为CriticalLevel,
       个人资料作为个人资料,
       role_status作为RoleStatus,
       nmcnv作为NamingConvention,
       作为MethodeLogy的方法论,
       锁定为锁定,
       current_step作为CurrentStep,
       max_step作为MaxStep,
       backend_mode为BackendMode,
       certify_period为CertifyPeriod,
       certify_date为CertifyDate
 } 

这是一对一的关系,为什么我没有在`RoleId2`列上获得唯一键。

谢谢

一周热门 更多>