Hello代码爱好者,我正在尝试学习顶级代码并坚持解决问题。由于你们这里的大多数人都是狂热的代码爱好者,并对解决问题感到兴奋,我认为我可以解决问题。
我正在尝试在名为Book的对象上创建触发器,该对象执行以下操作: 在删除时,还会删除所有关联的章节 还有一个名为Chapter的对象,它有一个可以预订的查找。
这是我的尝试。这是我第一次尝试顶点,所以请耐心等待。是否有人愿意涉足这段代码?
trigger DeleteChaptersTrigger on Book__c (before delete) {
List<Book__c> book = Trigger.old;
List<Chapter__c> chapters = new List<Chapter__c>();
Set set = new Set();
for (Book__c b :books){
if ()
}
}
答案 0 :(得分:3)
您需要编写所有触发器,并考虑触发器可能在任何时候处理许多记录,因此您需要bulkify your trigger code.
Here are the variables that available on the trigger object.
您希望获取将被删除的所有记录ID。使用keyset
上的oldmap
方法获取此信息,而无需循环并创建自己的集合。然后,您只需删除查询返回的记录。
trigger DeleteChaptersTrigger on Book__c (before delete) {
Set<string> bookids = Trigger.oldMap.keyset();
delete [SELECT Id FROM Chapter__c WHERE Book__c IN :bookids];
}
Apex代码与其他语言不同,它与重复使用的单词混淆,比如设置为变量名。 Apex也不区分大小写。
答案 1 :(得分:2)
由于您拥有完全控制权,我建议您更改自定义对象相互关联的方式。
如果没有书,章节没有意义/价值,所以我们想要改变两者之间的关系。
删除Chapter对象上的查找,并将其替换为master-detail。删除主记录后,Salesforce会自动删除详细信息相关记录。这就是你想要的,没有编码。