| java.lang.Object org.apache.derby.impl.sql.execute.InternalTriggerExecutionContext
InternalTriggerExecutionContext | public class InternalTriggerExecutionContext implements TriggerExecutionContext,ExecutionStmtValidator(Code) | | There is one of these beasts per INSERT/DELETE/UPDATE
statement. It fulfills the contract for the externally
visible trigger execution context and it validates
that a statement that is about to be executed doesn't
violate the restrictions placed upon what can be executed
from a trigger.
Note that it is crucial that cleanup() is called once
the DML has completed, cleanup() makes sure that users
can't do something invalid on a tec reference that they
were holding from when the trigger fired.
|
afterRow | protected ExecRow afterRow(Code) | | used exclusively for InsertResultSets which have autoincrement
columns.
|
changedColIds | protected int[] changedColIds(Code) | | |
cleanupCalled | protected boolean cleanupCalled(Code) | | |
dmlType | protected int dmlType(Code) | | |
InternalTriggerExecutionContext | public InternalTriggerExecutionContext(LanguageConnectionContext lcc, ConnectionContext cc, String statementText, int dmlType, int[] changedColIds, String[] changedColNames, UUID targetTableId, String targetTableName, Vector aiCounters) throws StandardException(Code) | | Build me a big old nasty trigger execution context.
Damnit.
About the only thing of real interest to outside observers
is that it pushes itself as the trigger execution context
in the lcc. Be sure to call cleanup() when you
are done, or you will be flogged like the reprobate that
you are.
Parameters: lcc - the lcc Parameters: statementText - the text of the statement that caused thetrigger to fire. may be null if we are replicating Parameters: changedColIds - the list of columns that changed. Nullfor all columns or INSERT/DELETE. Parameters: changedColNames - the names that correspond to changedColIds Parameters: targetTableId - the UUID of the table upon which the triggerfired Parameters: targetTableName - the name of the table upon which the triggerfired Parameters: aiCounters - A vector of AutoincrementCounters to keep stateof the ai columns in this insert trigger.a exception: StandardException - on error |
cleanup | protected void cleanup() throws StandardException(Code) | | Cleanup the trigger execution context. MUST
be called when the caller is done with the trigger
execution context.
We go to somewhat exaggerated lengths to free up
all our resources here because a user may hold on
to a TEC after it is valid, so we clean everything
up to be on the safe side.
exception: StandardException - on unexpected error |
clearCurrentTriggerEvent | void clearCurrentTriggerEvent()(Code) | | |
copyHashtableToAIHT | public void copyHashtableToAIHT(Hashtable from)(Code) | | Copy a hashtable of autoincrement values into the trigger
execution context hashtable of autoincrement values.
|
getEventStatementText | public String getEventStatementText()(Code) | | Get the text of the statement that caused the
trigger to fire.
the statement text |
getEventType | public int getEventType()(Code) | | Get the type for the event that caused the
trigger to fire.
the event type (e.g. UPDATE_EVENT) |
getModifiedColumns | public String[] getModifiedColumns()(Code) | | Get the columns that have been modified by the statement
that caused this trigger to fire. If all columns are
modified, will return null (e.g. for INSERT or DELETE will
return null).
an array of Strings |
getNewRow | public java.sql.ResultSet getNewRow() throws SQLException(Code) | | Like getAfterResultSet(), but returns a result set positioned
on the first row of the before result set. Used as a convenience
to get a column for a row trigger. Equivalent to getAfterResultSet()
followed by next().
the ResultSet positioned on the new row image. exception: SQLException - if called after the triggering event hascompleted |
getNewRowSet | public java.sql.ResultSet getNewRowSet() throws SQLException(Code) | | Returns a result set row the new images of the changed rows.
For a row trigger, the result set will have a single row. For
a statement trigger, this result set has every row that has
changed or will change. If a statement trigger does not affect
a row, then the result set will be empty (i.e. ResultSet.next()
will return false).
the ResultSet containing after images of the rows changed by the triggering event. exception: SQLException - if called after the triggering event hascompleted |
getOldRow | public java.sql.ResultSet getOldRow() throws SQLException(Code) | | Like getBeforeResultSet(), but returns a result set positioned
on the first row of the before result set. Used as a convenience
to get a column for a row trigger. Equivalent to getBeforeResultSet()
followed by next().
the ResultSet positioned on the old row image. exception: SQLException - if called after the triggering event hascompleted |
getOldRowSet | public java.sql.ResultSet getOldRowSet() throws SQLException(Code) | | Returns a result set row the old images of the changed rows.
For a row trigger, the result set will have a single row. For
a statement trigger, this result set has every row that has
changed or will change. If a statement trigger does not affect
a row, then the result set will be empty (i.e. ResultSet.next()
will return false).
the ResultSet containing before images of the rows changed by the triggering event. exception: SQLException - if called after the triggering event hascompleted |
getTargetTableId | public UUID getTargetTableId()(Code) | | Get the target table UUID upon which the
trigger event is declared.
the uuid of the target table |
getTargetTableName | public String getTargetTableName()(Code) | | Get the target table name upon which the
trigger event is declared.
the target table |
resetAICounters | public void resetAICounters(boolean begin)(Code) | | Reset Autoincrement counters to the beginning or the end.
Parameters: begin - if True, reset the AutoincremnetCounter to thebeginning-- used to reset the counters for thenext trigger. If false, reset it to the end--this sets up the counter appropriately for aAFTER STATEMENT trigger. |
updateAICounters | public void updateAICounters() throws StandardException(Code) | | Update Autoincrement Counters from the last row inserted.
|
validateStatement | public void validateStatement(ConstantAction constantAction) throws StandardException(Code) | | Make sure that whatever statement is about to be executed
is ok from the context of this trigger.
Note that we are sub classed in replication for checks
for replication specific language.
Parameters: constantAction - the constant action of the actionthat we are to validate exception: StandardException - on error |
wasColumnModified | public boolean wasColumnModified(String columnName)(Code) | | Find out of a column was changed, by column name
Parameters: columnName - the column to check true if the column was modified by this statement.Note that this will always return true for INSERTand DELETE regardless of the column name passed in. |
wasColumnModified | public boolean wasColumnModified(int columnNumber)(Code) | | Find out of a column was changed, by column number
Parameters: columnNumber - the column to check true if the column was modified by this statement.Note that this will always return true for INSERTand DELETE regardless of the column name passed in. |
|
|