diff --git a/vendor/magento/module-target-rule/Model/Mview/View/StatusAttributeTriggerFilter.php b/vendor/magento/module-target-rule/Model/Mview/View/StatusAttributeTriggerFilter.php
new file mode 100644
index 00000000000..f4dd12999ad
--- /dev/null
+++ b/vendor/magento/module-target-rule/Model/Mview/View/StatusAttributeTriggerFilter.php
@@ -0,0 +1,93 @@
+resource->getTableName(self::VIEW_ID . '_cl');
+ if (strpos($statement, $triggerTable) === false) {
+ return $statement;
+ }
+
+ $statusAttributeId = $this->getStatusAttributeId();
+ if ($statusAttributeId === null) {
+ return $statement;
+ }
+
+ $condition = $event === Trigger::EVENT_DELETE
+ ? sprintf('OLD.attribute_id = %d', $statusAttributeId)
+ : sprintf('NEW.attribute_id = %d', $statusAttributeId);
+
+ return sprintf('IF (%s) THEN %s END IF;', $condition, $statement);
+ }
+
+ /**
+ * Retrieve status attribute ID
+ *
+ * @return int|null
+ */
+ private function getStatusAttributeId(): ?int
+ {
+ if ($this->statusAttributeId !== null) {
+ return $this->statusAttributeId;
+ }
+
+ $attribute = $this->eavConfig->getAttribute(Product::ENTITY, 'status');
+ $attributeId = (int) $attribute->getAttributeId();
+ $this->statusAttributeId = $attributeId > 0 ? $attributeId : null;
+
+ return $this->statusAttributeId;
+ }
+}
diff --git a/vendor/magento/module-target-rule/etc/di.xml b/vendor/magento/module-target-rule/etc/di.xml
index e6e283b2c17..346f2043e84 100644
--- a/vendor/magento/module-target-rule/etc/di.xml
+++ b/vendor/magento/module-target-rule/etc/di.xml
@@ -94,4 +94,11 @@
+
+
+
+ - Magento\TargetRule\Model\Mview\View\StatusAttributeTriggerFilter
+
+
+
diff --git a/vendor/magento/module-target-rule/etc/mview.xml b/vendor/magento/module-target-rule/etc/mview.xml
index b0f6428774f..d1a3e9aa7e8 100644
--- a/vendor/magento/module-target-rule/etc/mview.xml
+++ b/vendor/magento/module-target-rule/etc/mview.xml
@@ -9,6 +9,7 @@
+