设置约束名称

2020-09-28 05:21发布

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

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


大家好,

只是想知道,是否可以配置DBMS扩展(在我们的示例中为Oracle11g)以某种方式允许PD自动对约束进行编号?

当前设置如下:

FK_%3.12UM:CHILD%_%3.12UM:PARENT%

问题是两个表之间的FK约束,例如。

参考文献1

Tabel 1:D_STA_UMS_GP_KONTRAH

塔贝尔2:D_NTF_UMS_GP_KONTRAH

参考名称: FK_STA_UMS_GP_KO_NTF_UMS_GP_KO

参考2

表1:D_STA_UMS_GP_KONGEN

表2:D_NTF_UMS_GP_KONGEN

参考名称: FK_STA_UMS_GP_KO_NTF_UMS_GP_KO

因此,最后,我们有两个引用,具有相同的约束名称,这显然导致在模型检查期间出错。

我们想要这样的东西:

参考文献1

Tabel 1:D_STA_UMS_GP_KONTRAH

塔贝尔2:D_NTF_UMS_GP_KONTRAH

参考名称: FK_STA_UMS_GP_K_NTF_UMS_GP_K01

参考2

表1:D_STA_UMS_GP_KONGEN

表2:D_NTF_UMS_GP_KONGEN

参考名称: FK_STA_UMS_GP_K_NTF_UMS_GP_K02

如何实现?

谢谢

Rafal

fk-naming.jpg (72.2 kB)

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

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


大家好,

只是想知道,是否可以配置DBMS扩展(在我们的示例中为Oracle11g)以某种方式允许PD自动对约束进行编号?

当前设置如下:

FK_%3.12UM:CHILD%_%3.12UM:PARENT%

问题是两个表之间的FK约束,例如。

参考文献1

Tabel 1:D_STA_UMS_GP_KONTRAH

塔贝尔2:D_NTF_UMS_GP_KONTRAH

参考名称: FK_STA_UMS_GP_KO_NTF_UMS_GP_KO

参考2

表1:D_STA_UMS_GP_KONGEN

表2:D_NTF_UMS_GP_KONGEN

参考名称: FK_STA_UMS_GP_KO_NTF_UMS_GP_KO

因此,最后,我们有两个引用,具有相同的约束名称,这显然导致在模型检查期间出错。

我们想要这样的东西:

参考文献1

Tabel 1:D_STA_UMS_GP_KONTRAH

塔贝尔2:D_NTF_UMS_GP_KONTRAH

参考名称: FK_STA_UMS_GP_K_NTF_UMS_GP_K01

参考2

表1:D_STA_UMS_GP_KONGEN

表2:D_NTF_UMS_GP_KONGEN

参考名称: FK_STA_UMS_GP_K_NTF_UMS_GP_K02

如何实现?

谢谢

Rafal

fk-naming.jpg (72.2 kB)
付费偷看设置
发送
2条回答
追夢秋陽
1楼 · 2020-09-28 05:48.采纳回答

在这种情况下,更改DBMS并不是一个好方法。 因为您需要找到存储所有引用的地方。

相反,您可以运行脚本或在转换中使用脚本来实现目标。

以下是示例:(打开模型并运行代码)

设置字典= CreateObject(" Scripting.Dictionary")


为model.references中的每个引用设置model = activemodel

FKeyname = ref.GetAttributeText(" ForeignKeyConstraintName")

如果dict.exists(FKeyname)则
number = dict.item(FKeyname)
number = number + 1
ref.ForeignKeyConstraintName = FKeyname和number
dict。删除FKeyname
dict.add FKeyname,数字
else
dict .add FKeyname,如果
next

,则1
结尾

对于model.references中的每个引用
FKeyname = ref.GetAttributeText(" ForeignKeyConstraintName")
如果dict.exists(FKeyname)和dict.item(FKeyname)> 1,则
ref.ForeignKeyConstraintName = FKeyname&1
如果
next

打个大熊猫
2楼-- · 2020-09-28 05:51

Hi Phillip,

结尾

感谢您的回答。 昨天,我已经在"模型"级别的"转换"中完成了此操作,但是脚本的复杂程度有所降低……我相信。 似乎也能正常工作。...

对于obj.Packages中的每个pkg
对于pkg中的每个引用。参考
'GTL-> FK_%3.12UM:CHILD%_%3.12UM:PARENT%
ref_name = ref.GetAttributeText( " ForeignKeyConstraintName")
cnt = 0
对于pkg中的每个ref_ex。参考
如果ref_ex.GetAttributeText(" ForeignKeyConstraintName")= ref_name和ref_ex <> ref那么
cnt = cnt + 1
结束If
下一步
如果cnt> 0则
ref.SetAttributeText" ForeignKeyConstraintName",ref.GetAttributeText(" ForeignKeyConstraintName")+" _" + Cstr(cnt)
结束If
下一个
下一个

BR,

Rafal

一周热门 更多>