转换Atlas Triggers
您可以使用查询转换器将SQL Atlas Triggers导入并转换为 MongoDB Atlas Triggers 。 转换 时,查询转换器会考虑项目中定义的SQL 代码和关系模式。Atlas Triggers
关于此任务
查询转换器使用AI技术,该技术可能无法转换过长或复杂的查询、触发器或存储过程。 某些查询可能无法正确转换,而另一些查询则可能根本无法转换。
查询转换器使用当前项目中的关系模式、MongoDB 模式和映射规则来确定应如何转换查询。 如果查询引用的表不在关系模式中或者未映射到 MongoDB collection,则转换可能会失败或不正确。
转换的查询、Atlas Triggers、视图和存储过程保存在项目中,并在项目导入和导出过程中持续存在。
SQL查询仅限于40 , 000文本字符。
您可以在左侧 Query Converter窗格中查看以前转换的历史记录。 每次转换都有一个指示转换结果的图标。 如果对象旁边没有 图标,则尚未尝试转换:
Icon说明转圈现在正在执行转换。绿色复选标记转换成功。红色感叹号上次转换尝试失败。
开始之前
您的关系数据库必须至少有一个要转换的trigger。
在将查询转换器部署到生产环境之前,请务必检查并测试查询转换器生成的代码。
步骤
在 Atlas 中创建 trigger
登录您的Atlas 帐户。
在Overview屏幕中,单击Triggers 。
单击 Add Trigger(连接)。
提示
转换后的 MongoDB 代码包含您必须在 Atlas 中选择才能创建 trigger 的所有变量的注释行。例如:
// Collection Name: products // Operation Type: Insert 在Name字段中输入trigger的名称。
选择Cluster Name 、 Database Name和Collection Name 。
选择Operation Type作为Insert Document 。
将Document Preimage和Full Document开关切换为打开。
在Function文本字段中输入转换后的 MongoDB 代码。
重要
更新生成的 Atlas 代码中的
clusterName
和databaseName
以匹配您的集群和数据库名称。单击Save以保存 Realm 触发器。
例子
转换 MySQL trigger
以下示例显示了到 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 } }); } };