转换触发器
您可以使用查询转换器将您的 SQL 触发器导入并转换为MongoDB Atlas 触发器。查询转换器在转换触发器时会考虑您项目中定义的 SQL 代码和关系型架构。
关于此任务
查询转换器使用AI技术,可能无法转换长或复杂的查询、触发器或存储过程。某些查询可能无法正确转换,而其他查询可能根本无法转换。
查询转换器使用当前项目中的关系模式、MongoDB模式以及映射规则来确定查询应该如何转换。如果查询引用的表不在关系模式中或未映射到MongoDB集合,转换可能会失败或不正确。
转换后的查询、触发器、视图和存储过程将保存在您的项目中,并在项目导入和导出过程中持续存在。
SQL查询限制为40,000个文本字符。
您可以在左侧查看先前转换的历史记录查询转换器面板。每个转换都有一个图标表示转换结果。如果对象旁边没有图标,则尚未尝试转换
图标描述旋转器转换正在执行。绿色勾号转换成功。红色感叹号上一次尝试转换失败。
开始之前
您的关系数据库必须至少有一个触发器才能进行转换。
在将代码部署到生产环境之前,始终要审查和测试查询转换器生成的代码。
步骤
3
4
5
在Atlas中创建触发器
登录您的Atlas账户。
从概览屏幕,点击触发器。
点击添加触发器。
提示
转换后的MongoDB代码包含所有必须在Atlas中选择以创建触发器的变量的注释行。例如
// Collection Name: products // Operation Type: Insert 在名称文本框中输入触发器的名称。
选择集群名称、数据库名称和集合名称。
将操作类型选择为插入文档。
打开文档预映像和完整文档开关。
在函数文本框中输入转换后的MongoDB代码。
重要
更新
clusterName
和databaseName
在生成的Atlas代码中,以匹配您的集群和数据库名称。点击保存以保存Atlas触发器。
示例
将 MySQL 触发器转换为
以下示例展示了 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 } }); } };