Informix Error -357
-357 Dependent table for view view-name has been altered.
The view is based on data from a table that has been altered since the view was defined. The alteration removed or renamed a column that is used in the view. The view can no longer be used. Drop the view, and redefine it to use the current schema.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-357 fires when a view's underlying table was altered in a way that broke the view's definition —
specifically, a column the view's SELECT referenced was renamed or removed. Informix doesn't
automatically update or invalidate-and-warn on views when their base tables change; the view
simply becomes unusable until it's fixed.
ALTER TABLE ... DROPremoving a column that a view's defining query references.RENAME COLUMNon a column that a view's defining query references by its old name.- A schema migration that changed the base table without checking for dependent views first.
- Multiple views layered on top of each other (a view built on another view), where the root table change cascades into breaking several dependent objects at once.
Solutions / Resolution
- Drop and recreate the view based on the table's current schema, per the official guidance — there's no in-place repair for a broken view definition.
- Before altering a base table, check for dependent views referencing the columns being changed, so the recreation can happen proactively rather than being discovered via this error later.
- For a chain of dependent views, recreate them in dependency order (innermost/base-most view first) after the underlying table change.
Examples
Recreating a view after a column rename
RENAME COLUMN orders.status TO order_status;
-- an existing view referencing orders.status is now broken
DROP VIEW pending_orders_view;
CREATE VIEW pending_orders_view AS
SELECT order_id, customer_id, order_status
FROM orders WHERE order_status = 'pending';
Checking for dependent views before altering a table
SELECT t.tabname FROM systables t, sysviews v
WHERE t.tabid = v.tabid AND v.viewtext LIKE '%orders%';
-- review before running an ALTER TABLE that touches referenced
-- columns on orders
Diagnostic Checks
- Identify which column change on the base table broke the view by comparing the view's defining query against the table's current column list.
- Check for other views built on top of the broken view, which will need recreation too once the root view is fixed.
Related Errors / Related Topics
- -352 — "Column column-name not found." The underlying condition that often triggers this error — a view's query now references a column that no longer exists.
- -322 — "Cannot Alter view, Rename view or Create a trigger on a view." A related view restriction — reinforces why "drop and recreate" is the standard fix pattern for views in general, not just for this error.
Drop and recreate the view against the table's current schema — Informix doesn't offer an in-place repair, and checking for dependent views before altering a base table avoids this entirely.