Db2 Troubleshooting
SQLCODE -531 parent delete restricted
SQLCODE -531: parent delete restricted — you tried to delete a parent row that still has child rows.
What it means
- After every EXEC SQL, DB2 returns a SQLCODE: 0 means success, +100 means no row found, and negative values mean an error.
Common causes
- DELETE on a parent with dependent rows and no cascade rule.
- Cleanup job deleting in the wrong order.
How to diagnose
- Find the child rows blocking the delete.
- Check the delete rule on the foreign key.
How to fix it
- Delete child rows first, then the parent.
- Or alter the rule to CASCADE if business rules allow.
Example: Delete children before parents
* Order matters: EMP rows first, then DEPT row.
* Or define ON DELETE CASCADE.
Child-first ordering prevents -531.
Interview tip
- Q: How would you troubleshoot a SQLCODE -531 parent delete restricted in production?
- A: I would check the SQLCODE and SQLERRM immediately after the failing statement, reproduce in SPUFI, then apply the specific fix.
Prevention checklist
- Always check SQLCODE after every EXEC SQL statement.
- Log the SQLCODE, SQLSTATE and failing statement for support.
