Informix Error -751
-751 Remote procedure execution disallowed with pre-5.01 server.
The action clause of the trigger contains an SPL routine that is not called in a data manipulation statement, and an external database server before Version 5.01 will execute the procedure. This action is not allowed. An SPL routine that is called within a data manipulation statement cannot execute certain SQL statements, including transaction-related statements. Transaction-related statements are not allowed within an SPL routine that is a triggered action. A database server before Version 5.01 cannot check for this condition, so the procedure is not allowed. If possible, execute the procedure on a Version 5.01 or later database server.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-751 fires when a trigger's action calls an SPL routine directly (not as part of a data manipulation statement) and an external database server older than Version 5.01 would execute that routine — per the official guidance, an SPL routine called from a data manipulation statement is restricted from certain SQL statements (transaction-related statements aren't allowed inside a triggered action's routine, per -744's family of restrictions), and servers before 5.01 can't enforce that check themselves — so the call is disallowed outright rather than risk it running unchecked.
- A trigger's action calling an SPL routine directly, routed to an external server older than 5.01, per the official guidance — the direct, only cause.
- A mixed-version distributed environment, the same underlying situation as -749, here affecting remote procedure execution from a trigger specifically.
Solutions / Resolution
- Execute the procedure on a Version 5.01 or later database server, per the official guidance — the documented, only resolution, since the restriction is version-based.
- Identify which external server the trigger's routine call routes to, and confirm its version, the same diagnostic approach as -749.
- Restructure the trigger to call the routine locally (on a 5.01+ server) if the remote routing to the older server isn't strictly necessary.
Examples
Checking the external server's version
$ onstat - -- run against the external server the trigger's routine call routes to
-- compare the reported version against 5.01
Diagnostic Checks
- Identify the external server involved in the trigger's remote procedure call, and check its version against the 5.01 minimum, the same check as -749.
Related Errors / Related Topics
- -749 — "Remote cursor operation disallowed with pre-5.01 server." The same version-floor restriction, for cursor operations rather than procedure execution.
- -744 — "Illegal SQL statement in trigger." The underlying restriction (transaction-related statements not allowed in a triggered SPL routine) that pre-5.01 servers can't enforce themselves, which is why this remote case is blocked outright.
The same version-floor restriction as -749, for remote procedure execution from a trigger — identify and upgrade the pre-5.01 external server involved.