SAP ABAP 中的外键2025年3月17日 | 阅读 7 分钟 什么是外键?
![]() 以下是创建外键关系所需的两个要求
什么是主键?主键是一个通过一个或多个列唯一标识表中行的字段。主键字段不能有 NULL 值或重复值。为了在两个表之间建立关系或链接表,第一个表(被引用表)的主键将被添加到另一个表(依赖表),它将成为第二个表的外键。 外键关系的概念外键关系是为了**避免冗余和执行表验证**而在 ABAP 中关联或连接两个不同表的。 我们可以通过一个例子来理解它。假设有两个表;Table1(外键表或依赖表),Table2(检查表或被引用表)。表如下所示 ![]() Table1 中的所有记录都已成功保存。下面我们将把记录保存在 Table2 中。 ![]() 正如我们所见,它有两个已成功保存的记录。但是如果我们尝试在此表中存储一个不在 Table1 中的新记录,例如 **5 Dept3 Assist. Manager** 然后由于外键关系,我们不允许在此表中添加此记录。 ABAP 中的表验证表验证是一种技术,通过该技术我们可以限制表中无效的条目。在 ABAP 中执行表验证有两种方法
注意:这里我们将通过检查表概念来理解字段级别验证。检查表概念(字段级别验证)在检查表概念中,我们考虑两个表;**检查表**和**外键表**。 检查表是存储主数据的表。 另一个表,它与检查表链接以验证其自身字段数据,称为**外键表**。值表是在域级别开发的,主要用于数据完整性和一致性。 在下图,我们可以理解检查表概念 ![]() 如上图所示,有两个表,T1(外键表)和 T2(检查表)。T2 表包含两个主键字段 Field5 和 Field6,T1 表包含两个外键字段 Field2 和 Field4,以及一个主键 Field1。 因此,我们可以将 T2 的主键(Field 5 和 Field 6)与 T1 的外键字段(Field 2 和 Field 3)连接起来。 这里需要记住一点,即所有链接字段的数据类型和长度应相同,这样才能维护外键关系。 输入检查如何工作?可以通过理解以下概念来理解 触发外键 当我们在外键表中输入值时,外键会立即触发。外键的触发是通过 SELECT 语句实现的,该语句会检查检查表中匹配的行。如果表中没有匹配的行,它会显示一个标准消息,表明输入的值无效。除了 SELECT 语句,外键还可以通过功能键、按钮或菜单项来触发。 以下是与外键相关的其他一些概念
复合外键 包含两个或多个字段的外键称为**复合外键**。要对复合外键应用检查,系统会将外键表中的两个字段与检查表中的两个字段进行比较。 定义复合外键的字段称为检查字段,它必须为空,否则复合外键将不会被触发。 泛型和常量外键 我们知道,要创建外键,检查表的所有主键都必须包含在外键关系中。但在某些情况下,我们只想针对选定的字段执行验证,而其他字段可以排除,因此对于这种情况,我们可以使用**泛型**外键。 我们还可以为检查表键字段分配常量值,这将允许我们针对**检查表的常量值**检查值。 外键的语义属性可以通过定义**基数**和**外键字段类型**来更精确地指定两个表之间的外键关系。虽然提供此信息是可选的,并且不用于值检查。它主要用于文档目的。 外键的基数外键的基数用于指定外键表中与检查表中对应值允许的行数。它是在创建外键关系时定义的。它可以表示为 **X: Y** 关系,其中 X 用于检查表,Y 用于外键表。 X 的可能值是
Y 的值可以是
**示例**:如果基数给定为 1:N,则表示对于外键表的每条记录,都存在一条记录。 外键字段类型 外键字段类型描述了外键表中外键字段的含义。以下是不同类型的外键字段
在 ABAP 中创建外键以下是在 ABAP 数据库表中创建外键关系的步骤
自定义外键检查中的错误消息如果检查表验证或外键检查失败,则会生成标准错误消息。可以使用**SE91 SAP 事务码**替换此错误消息。 下一个主题SAP 事务码 |
我们请求您订阅我们的新闻通讯以获取最新更新。