在客户上编辑唯一索引

2020-09-15 13:34发布

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

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


通过超级项目类型Principal,项目类型Customer具有唯一的索引UID。 Principal还将uid列为唯一属性。

我需要更改此索引,以在唯一索引中添加一列。

我尝试了以下操作,但不起作用。

  
      <属性>
          
              
          
      
      <索引>
          
              
              
          
      
  

  

我也尝试过。

  
      <属性>
          
              
              <修饰符read =" true" write =" true" search =" true"可选=" false" unique =" false"/>
              <自定义属性>
                  
                      "领域" 
                  
              
          
          
              
          
      
      <索引>
          
              
              
          
      
  
 
  

运行更新系统时,没有任何变化。

  [java] INFO [main] [HybrisSchemaGenerator]读取类型系统信息。 花费时间1.773 s
   [java]信息[主] [HybrisSchemaGenerator]准备Db模型。
   [java]信息[主] [数据库模型生成器]类型(4)与表(用户)的索引(UID_4)已存在
   [java]信息[主] [DatabaseModelGenerator]具有(876)个表的准备好的数据库模型。
   [java]信息[主] [HybrisSchemaGenerator]准备的Db模型。 花费时间7.896 s
   [java]信息[主] [HybrisSchemaGenerator]准备目标和源模型
 


  

有人能指出我正确的做法吗? 我正在使用Hybris 6.4。

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

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


通过超级项目类型Principal,项目类型Customer具有唯一的索引UID。 Principal还将uid列为唯一属性。

我需要更改此索引,以在唯一索引中添加一列。

我尝试了以下操作,但不起作用。

  
      <属性>
          
              
          
      
      <索引>
          
              
              
          
      
  

  

我也尝试过。

  
      <属性>
          
              
              <修饰符read =" true" write =" true" search =" true"可选=" false" unique =" false"/>
              <自定义属性>
                  
                      "领域" 
                  
              
          
          
              
          
      
      <索引>
          
              
              
          
      
  
 
  

运行更新系统时,没有任何变化。

  [java] INFO [main] [HybrisSchemaGenerator]读取类型系统信息。 花费时间1.773 s
   [java]信息[主] [HybrisSchemaGenerator]准备Db模型。
   [java]信息[主] [数据库模型生成器]类型(4)与表(用户)的索引(UID_4)已存在
   [java]信息[主] [DatabaseModelGenerator]具有(876)个表的准备好的数据库模型。
   [java]信息[主] [HybrisSchemaGenerator]准备的Db模型。 花费时间7.896 s
   [java]信息[主] [HybrisSchemaGenerator]准备目标和源模型
 


  

有人能指出我正确的做法吗? 我正在使用Hybris 6.4。

付费偷看设置
发送
6条回答
哎,真难
1楼-- · 2020-09-15 13:55

系统更新不会更改现有索引。

我认为,如果您将其添加为新索引(即为其命名),则应在系统更新时创建它。

否则,您的另一个选择是系统初始化(如果您想保留数据,则可能不可行)或自己手动更改数据库中的索引。

bbpeas
2楼-- · 2020-09-15 13:54

为什么不能重命名索引(也许是uid_banner)?

干杯,托马斯

me_for_i
3楼-- · 2020-09-15 13:52

您已经注意到,即使在索引约束使操作失败之前,默认的UniqueAttributesInterceptor也会阻止您执行操作,

  1. 不要重新声明UID属性-这样做没有意义

  2. 也将新的标题属性声明为唯一,以便绕过UniqueAttributesInterceptor

  3. 声明具有2个属性的新的唯一复合索引

  4. 创建一个SQL脚本,该脚本将直接从数据库中删除仅UID唯一索引,您可以在侦听init/update消息的类中执行它

四川大学会员
4楼-- · 2020-09-15 13:55

我无法。 UID是主体上的唯一密钥,我无法删除它。 即使我设法删除了Customer表的唯一键,我也遇到了很多验证器,这些验证器不允许我插入与唯一键冲突的数据。 因此,我放弃了尝试。

野沐沐
5楼-- · 2020-09-15 14:08

您需要使用其他修饰符重新声明Principal UID索引,然后添加覆盖旧索引的新索引(也许还需要手动删除旧索引):

  
      <属性>
          
              <修饰符read =" true" write =" true" search =" true"可选=" false" unique =" true"/>
              
          
      
      <索引>
          
              
              
          
      
  
  
      <索引>
          
              
          
      
  

  
野沐沐
6楼-- · 2020-09-15 14:08

我也在尝试覆盖项类型的唯一索引。 哪种解决方案最适合您?

一周热门 更多>