With the following attribute rule
var fsPoly = Intersects(fsPolyBoundary, Geometry($feature))
var loc = First (fsPoly)
var name = """"
if (loc == null)
return {""errorMessage"": ""Transformers must be created in a substation.""}
else
name = loc.LOC_NAME
return name + "" - "" + $feature.LOC_NAME;",,,False,True,False,,,,"{""type"":""PropertySet"",""propertySetItems"":[]}"We can update a field name based on its relationship "within" another polygon.
If I want the field calculated on insert or edit, I do this:

Problem is, what if the user makes an attribute edit, not a shape edit? The rule still fires (and takes a performance hit).
With SQL triggers, I can restrict them to only fire if the shape is new or updated, and ignore any attribute updates.
The same functionality should exist for attribute rules.