文档菜单
文档首页
/
关系型迁移器
/ /

转换触发器

在本页面上

  • 关于此任务
  • 开始之前
  • 步骤
  • 示例
  • 了解更多

您可以使用查询转换器将您的 SQL 触发器导入并转换为MongoDB Atlas 触发器。查询转换器在转换触发器时会考虑您项目中定义的 SQL 代码和关系型架构。

  • 查询转换器使用AI技术,可能无法转换长或复杂的查询、触发器或存储过程。某些查询可能无法正确转换,而其他查询可能根本无法转换。

  • 查询转换器使用当前项目中的关系模式、MongoDB模式以及映射规则来确定查询应该如何转换。如果查询引用的表不在关系模式中或未映射到MongoDB集合,转换可能会失败或不正确。

  • 转换后的查询、触发器、视图和存储过程将保存在您的项目中,并在项目导入和导出过程中持续存在。

  • SQL查询限制为40,000个文本字符。

  • 您可以在左侧查看先前转换的历史记录查询转换器面板。每个转换都有一个图标表示转换结果。如果对象旁边没有图标,则尚未尝试转换

    图标
    描述
    旋转器
    转换正在执行。
    绿色勾号
    转换成功。
    红色感叹号
    上一次尝试转换失败。
  • 您的关系数据库必须至少有一个触发器才能进行转换。

  • 在将代码部署到生产环境之前,始终要审查和测试查询转换器生成的代码。

1

代码生成选项卡,点击查询转换器面板。

如果您是第一次访问查询转换器或您的会话已过期,请点击登录以使用查询转换器并提供您的Atlas凭据。

2
  • 如果您是第一次在项目中使用查询转换器,请点击从数据库导入

  • 如果您的项目已有转换后的SQL代码,请点击左侧面板上的管理数据库对象按钮。

3
  1. 在“导入数据库对象”对话框中,点击“数据库”旁边的图标。

  2. 点击您的模式旁边的图标。

  3. 点击“触发器”旁边的图标。

    提示

    要切换触发器的转换状态,请点击触发器名称旁边的图标。默认情况下,所有触发器都处于选中状态。

  4. 点击“保存”。

    您的数据库模式中的每个触发器代码都导入到项目中,并在左侧的“查询转换器”面板下的“触发器”部分可见。

4
  1. 在左侧的“触发器”部分单击一个触发器的名称。

    提示

    您可以使用“过滤”文本框根据对象名称和SQL语法过滤查询、存储过程、触发器和视图。

    SQL触发器代码在“导入触发器”面板中显示。

  2. 点击“转换”按钮。等待查询转换器转换您的代码。

    转换后的MongoDB代码在“转换后的MongoDB查询”面板中显示。

    如果查询转换器出现错误,您可以在“转换后的MongoDB查询”面板中查看详细信息。

  3. 点击“转换后的MongoDB查询”面板上的图标以将MongoDB代码复制到剪贴板。

5
  1. 登录您的Atlas账户。

  2. 概览屏幕,点击触发器

  3. 点击添加触发器

    提示

    转换后的MongoDB代码包含所有必须在Atlas中选择以创建触发器的变量的注释行。例如

    // Collection Name: products
    // Operation Type: Insert
  4. 名称文本框中输入触发器的名称。

  5. 选择集群名称数据库名称集合名称

  6. 操作类型选择为插入文档

  7. 打开文档预映像完整文档开关。

  8. 函数文本框中输入转换后的MongoDB代码。

    重要

    更新clusterNamedatabaseName在生成的Atlas代码中,以匹配您的集群和数据库名称。

  9. 点击保存以保存Atlas触发器。

以下示例展示了 MySQL 触发器转换为 Atlas 的转换器

CREATE TRIGGER TRIGGER_UPPER_PRODUCTS
BEFORE INSERT
ON MYDATABASE.PRODUCTS
FOR EACH ROW
SET NEW.FULL_NAME = UPPER(new.FULL_NAME)
// The relational database trigger has been converted to MongoDB Atlas Triggers format.
// To create a trigger, open your Atlas project (https://cloud.mongodb.com) and choose Triggers
// For more on Atlas triggers see the docs: https://mongodb.ac.cn/docs/atlas/triggers/
// Create your trigger using the following settings and paste the code into the Function section:
// Watch Against: Collection
// Cluster Name: Ensure clusterName matches selection in Atlas Trigger configuration
// Database Name: Ensure databaseName matches selection in Atlas Trigger configuration
// Collection Name: products
// Operation Type: Insert
// Full Document: On
// Document Preimage: Off
exports = async function(changeEvent) {
const clusterName = "clusterName";
const databaseName = "databaseName";
const { fullDocument } = changeEvent;
const db = context.services.get(clusterName).db(databaseName);
const collection = db.collection('products');
if (fullDocument && fullDocument.fullName) {
fullDocument.fullName = fullDocument.fullName.toUpperCase();
await collection.updateOne({ _id: fullDocument._id }, { $set: { fullName: fullDocument.fullName } });
}
};
  • 转换视图

  • 转换查询

  • 转换存储过程

返回

转换存储过程