.Dd January 24, 2024 .Dt SQLITE3SESSION_INDIRECT 3 .Os .Sh NAME .Nm sqlite3session_indirect .Nd set or clear the indirect change flag .Sh SYNOPSIS .In sqlite3.h .Ft int .Fo sqlite3session_indirect .Fa "sqlite3_session *pSession" .Fa "int bIndirect" .Fc .Sh DESCRIPTION Each change recorded by a session object is marked as either direct or indirect. A change is marked as indirect if either: .Bl -bullet .It The session object "indirect" flag is set when the change is made, or .It The change is made by an SQL trigger or foreign key action instead of directly as a result of a users SQL statement. .El .Pp If a single row is affected by more than one operation within a session, then the change is considered indirect if all operations meet the criteria for an indirect change above, or direct otherwise. .Pp This function is used to set, clear or query the session object indirect flag. If the second argument passed to this function is zero, then the indirect flag is cleared. If it is greater than zero, the indirect flag is set. Passing a value less than zero does not modify the current value of the indirect flag, and may be used to query the current state of the indirect flag for the specified session object. .Pp The return value indicates the final state of the indirect flag: 0 if it is clear, or 1 if it is set. .Sh IMPLEMENTATION NOTES These declarations were extracted from the interface documentation at line 11071. .Bd -literal SQLITE_API int sqlite3session_indirect(sqlite3_session *pSession, int bIndirect); .Ed