Salesforce工具API-停用触发器

Salesforce工具API-停用触发器,salesforce,tooling,Salesforce,Tooling,我正在尝试使用工具API停用触发器。我已经成功地在一个开发组织。但在真正的开发者组织中无法做到这一点。这是Salesforce工具api错误吗 这是算法的基础 创建具有唯一名称的MetadataContainer 保存元数据容器 创建一个ApexTriggerMember,设置正文、MetadataContainerId、ContentEntityId和元数据[apiVersion=33.0 packageVersions=[]状态=“非活动”URL=nil>] 修改元数据[“状态”]=“非活动

我正在尝试使用工具API停用触发器。我已经成功地在一个开发组织。但在真正的开发者组织中无法做到这一点。这是Salesforce工具api错误吗

这是算法的基础

  • 创建具有唯一名称的MetadataContainer
  • 保存元数据容器
  • 创建一个ApexTriggerMember,设置正文、MetadataContainerId、ContentEntityId和元数据[apiVersion=33.0 packageVersions=[]状态=“非活动”URL=nil>]
  • 修改元数据[“状态”]=“非活动”
  • 保存ApexTriggerMember
  • 创建/保存ContainerSyncRequest
  • 监视容器直到完成
  • 如果合适,显示错误
  • 在沙盒中,我在重新查询Apex enter code hereTriggerMember后确认只读字段“Content”看起来合适。我还确认MetadataContainerId现在指向一个状态为“已完成”的ContainerSynccrequest

    这是我的结果,它看起来很成功,但ApexTrigger从未停用 ContentEntityId=01q…………[我要停用的ApexTrigger]

    Content="<?xml version=\"1.0\" encoding=\"UTF-8\"?>
        <ApexTrigger xmlns=\"urn:metadata.tooling.soap.sforce.com\">
            <apiVersion>33.0</apiVersion>
            <status>Inactive</status>
        </ApexTrigger>" 
    
    Metadata={apiVersion=33.0 packageVersions=nil status="Inactive" urls=nil> attributes=        {type="ApexTriggerMember"
         url="/services/data/v33.0/tooling/sobjects/ ApexTriggerMember/401L0000000DCI8IAO"
      }
    
    }
    
    Content=”
    33
    不活跃的
    " 
    Metadata={apiVersion=33.0 packageVersions=nil status=“Inactive”URL=nil>attributes={type=“ApexTriggerMember”
    url=“/services/data/v33.0/tooling/sobjects/ApexTriggerMember/4010000000dci8iao”
    }
    }
    
    我认为您需要将非活动触发器从沙箱部署到生产环境。您不能在生产中简单地停用触发器。即使在UI中也是如此

    还有其他选项,例如使用自定义设置或元数据类型来存储运行/不运行值。您可以在触发器中查询该值以决定是否运行它


    你能给我一些样品吗?如何停用?