Docs 菜单
Docs 主页
/
Relational Migrator
/ /

转换Atlas Triggers

在此页面上

  • 关于此任务
  • 开始之前
  • 步骤
  • 例子
  • 了解详情

您可以使用查询转换器将SQL Atlas Triggers导入并转换为 MongoDB Atlas Triggers 。 转换 时,查询转换器会考虑项目中定义的SQL 代码和关系模式。Atlas Triggers

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

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

  • 转换的查询、Atlas Triggers、视图和存储过程保存在项目中,并在项目导入和导出过程中持续存在。

  • SQL查询仅限于40 , 000文本字符。

  • 您可以在左侧 Query Converter窗格中查看以前转换的历史记录。 每次转换都有一个指示转换结果的图标。 如果对象旁边没有 图标,则尚未尝试转换:

    Icon
    说明
    转圈
    现在正在执行转换。
    绿色复选标记
    转换成功。
    红色感叹号
    上次转换尝试失败。
  • 您的关系数据库必须至少有一个要转换的trigger。

  • 在将查询转换器部署到生产环境之前,请务必检查并测试查询转换器生成的代码。

1

Code Generation标签页中,单击Query Converter窗格。

如果这是您第一次访问查询转换器或者您的会话已过期,请单击Log In To Use Query Converter并提供您的 Atlas 档案。

2
  • 如果这是您第一次在项目中使用查询转换器,请单击Import From Database

  • 如果您的项目已经转换了 SQL 代码,请单击左侧窗格中的Manage Database Objects按钮。

3
  1. Import Database Objects模式中,单击Database旁边的图标。

  2. 单击模式旁边的图标。

  3. 单击Triggers旁边的图标。

    提示

    要切换trigger以进行转换,请单击trigger名称旁边的图标。 默认,所有触发器均处于选中状态。

  4. 单击 Save(连接)。

    trigger在您的数据库模式中的每个代码都会导入到您的项目中,并显示在左侧Query Converter窗格的Triggers下。

4
  1. 单击左侧窗格中Triggers下的触发器名称。

    提示

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

    SQL trigger 代码显示在Imported Trigger窗格中。

  2. 单击Convert按钮。 等待查询转换器转换您的代码。

    转换后的 MongoDB 代码会显示在Converted MongoDB Query窗格中。

    如果查询转换器出现错误,您可以在 Converted MongoDB Query 窗格中查看详细信息。

  3. 单击 Converted MongoDB Query图标,将MongoDB代码复制到剪贴板。

5
  1. 登录您的Atlas 帐户。

  2. Overview屏幕中,单击Triggers

  3. 单击 Add Trigger(连接)。

    提示

    转换后的 MongoDB 代码包含您必须在 Atlas 中选择才能创建 trigger 的所有变量的注释行。例如:

    // Collection Name: products
    // Operation Type: Insert
  4. Name字段中输入trigger的名称。

  5. 选择Cluster NameDatabase NameCollection Name

  6. 选择Operation Type作为Insert Document

  7. Document PreimageFull Document开关切换为打开。

  8. Function文本字段中输入转换后的 MongoDB 代码。

    重要

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

  9. 单击Save以保存 Realm 触发器。

以下示例显示了到 Atlas 的 MySQL trigger 转换器:

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://www.mongodb.com/zh-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 } });
}
};
  • 转换视图

  • 转换查询

  • 转换存储过程

后退

转换存储过程