1443
MySQLERRORNotableViewsHIGH confidence

View definition contains GROUP BY or aggregate — update prevented

Production Risk

Low — the update will fail; redirect writes to base tables.

What this means

ER_VIEW_PREVENT_UPDATE (1443, SQLSTATE HY000) is raised when a view references a table whose definition contains a GROUP BY or aggregate function, preventing updates through the view.

Why it happens
  1. 1Attempting to UPDATE or INSERT through a view that contains GROUP BY
  2. 2View was defined with aggregate functions making it non-updatable
How to reproduce
trigger — this will error
trigger — this will error
CREATE VIEW order_totals AS
  SELECT customer_id, SUM(amount) AS total FROM orders GROUP BY customer_id;
UPDATE order_totals SET total = 100 WHERE customer_id = 1;

expected output

ERROR 1443 (HY000): The definition of table 'order_totals' prevents operation UPDATE on table 'orders'.

Fix

Update the base table directly

Update the base table directly
-- Update the underlying table, not the view:
UPDATE orders SET amount = 100 WHERE customer_id = 1;

Why this works

Views with aggregates or GROUP BY are not updatable; always modify the base table.

Sources
Official documentation ↗

MySQL 8.0 — 1443 ER_VIEW_PREVENT_UPDATE

Content generated with AI assistance and reviewed for accuracy. Found an error? hello@errcodes.dev

← All MySQL errors