WebStorm 2025.2 Help

虚拟外键

在某些情况下,您可能不希望使用显式定义的外键。 不使用外键的原因可能包括性能问题(在 CRUD 操作中)、数据库特性(如 ClickHouse 和 Apache Cassandra 等数据库不支持外键)、使用临时表(用于测试)、个人原因等。

在这种情况下,您仍然可以在不更改数据库代码的情况下创建外键关系。 为此,请使用 virtual foreign keys。 虚拟外键是 IDE 中的虚拟对象。 与外键不同,虚拟外键不会在数据库代码中定义。

请参考以下示例查询:

SELECT * FROM activity JOIN visitor ON visitor_id = visitor.id

假设 visitor_id 在数据库中未定义为外键。 您仍然可以在本次 JOIN 子句中使用 activity 表中的 visitor_id 字段与 visitor 表中 id 字段之间的虚拟关系。 您可以 保存此关系并在以后使用,或 配置规则 ,通过在设置中使用正则表达式为虚拟外键定义规则。

虚拟外键

虚拟外键关系存储于 external-data-<data_source_name>.xml 。 您可以为 XML 文件选择另一个名称及其存储位置。 要更改或查看 XML 文档路径,请按 Shift+Enter 打开数据源设置,点击 选项 选项卡,并查看 虚拟对象和特性 字段。

虚拟外键(虚拟外键 )可在 数据库 工具窗口中找到。

数据库中的虚拟外键

创建虚拟外键

  1. 数据库 工具窗口中,展开数据源树,直到显示表节点。

  2. 右键点击表节点并选择 新建|虚拟外键

  3. 在打开的 修改 对话框中,在 名称 字段中输入虚拟外键名称。

  4. 目标表 面板中,指定目标表名。

  5. 面板中,点击 添加 按钮(添加按钮)。

  6. 列名 字段中,指定子表中的列名称。

  7. 目标名称 字段中,指定目标表中的列名称。

  8. 单击 确定 添加虚拟外键。

  9. 如打开 为 <data_source_name> 保存外部数据 对话框,请指定 external-data-<data_source_name>.xml 文件的目录并点击 保存

在“修改”对话框中创建虚拟外键
  1. 单击 ON 子句中的表关系并按下 Alt+Enter

  2. 选择 存储表关系

  3. 如打开 为 <data_source_name> 保存外部数据 对话框,请指定 external-data-<data_source_name>.xml 文件的目录并点击 保存

保存表关系

为虚拟外键创建规则

您可以使用正则表达式创建规则,使 WebStorm 将一个表中的列指向另一个表中的列。

  1. 打开设置(Ctrl+Alt+S ),并导航至 数据库|其他

  2. 定位 虚拟外键 部分。

  3. 在表中,单击 添加 按钮(单击“添加”按钮)。

  4. 双击 列模式 单元格,并输入匹配您要用作虚拟外键的列名的正则表达式。

  5. 双击 目标列模式 单元格,并输入替换模式。 替换模式使用来自 列模式 表达式的匹配项,并被解释为正则表达式。

    您可以使用 检查… 按钮(检查按钮 )检查您的规则。 选择规则后单击 检查… 按钮,将打开 规则调试器 对话框。 您可以在 生成的模式 字段中查看结果。 生成的模式 字段中的生成表达式必须匹配所需的 目标表.列 模式。

    为虚拟外键创建规则

调试虚拟外键规则

  1. 打开设置(Ctrl+Alt+S ),然后导航到 数据库|其他

  2. 定位 虚拟外键 部分。

  3. 选择规则并点击 检查… 按钮(检查按钮)。

  4. 规则调试器 对话框中填写以下字段:

    • 列模式 :匹配您想要用作虚拟外键的列名的正则表达式。

      例如,要描述使用 _id 后缀的列,请使用 (.*)_(?i)id 正则表达式。 此正则表达式将匹配 visitor_idvisitor_Id 等列,并将 visitors 捕获为第一个捕获组($1)。

    • 目标列模式 :替换模式,使用来自 列模式 表达式的匹配项并被解释为正则表达式。 您可以在 生成的模式 字段中查看结果。 请注意,只有在 源列 字段中提供列名称示例时,结果才会显示。

      例如,您可以使用来自 列模式 表达式的捕获组($1 ),加上点号(. )和 id。 此表达式将生成我们可以用作主键的 visitor.id 引用。

      注意目标列模式 替换模式用于在 生成模式 字段中生成带有捕获组的正则表达式模式。 请确保对被字面翻译的符号(如示例表达式中的点号 $1\\.(?i)id )进行了双重转义。

    • 源列 :您想要用作虚拟外键的列名示例。

    • 生成的模式 :生成的只读正则表达式模式,用于匹配 目标表.列 名称。 生成的模式 是由 目标列模式 中的替换模式生成的结果。

    • 目标表.列 :用作 源列 中虚拟外键主键的表和列名示例。

    调试虚拟外键规则

在代码补全中显示虚拟外键

WebStorm 可以为 JOIN 语句生成可能的代码补全建议列表。 代码补全列表包含来自其他表的列名称建议,这些列与 JOIN 语句中表的列同名。

例如,假设 actor 表包含以下列: actor_idfirst_namelast_namelast_update。 在建议列表中,您将看到这些列在其他表中出现时的可能补全项。

  1. Ctrl+Alt+S 打开设置,并导航至 编辑器|常规|代码补全

  2. 向下滚动到 SQL 部分,选择 根据名称匹配建议非严格外键

    基于名称匹配启用建议非严格外键
    基于名称匹配禁用建议非严格外键
最后修改日期: 2025年 9月 26日