Package org.h2.schema
Class TriggerObject
- java.lang.Object
-
- org.h2.engine.DbObject
-
- org.h2.schema.SchemaObject
-
- org.h2.schema.TriggerObject
-
- All Implemented Interfaces:
HasSQL
public final class TriggerObject extends SchemaObject
A trigger is created using the statement CREATE TRIGGER
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
before
static int
DEFAULT_QUEUE_SIZE
The default queue size.private boolean
insteadOf
private boolean
noWait
private boolean
onRollback
private int
queueSize
private boolean
rowBased
private Table
table
private Trigger
triggerCallback
private java.lang.String
triggerClassName
private java.lang.String
triggerSource
private int
typeMask
-
Fields inherited from class org.h2.engine.DbObject
AGGREGATE, comment, COMMENT, CONSTANT, CONSTRAINT, database, DOMAIN, FUNCTION_ALIAS, INDEX, RIGHT, ROLE, SCHEMA, SEQUENCE, SETTING, SYNONYM, TABLE_OR_VIEW, trace, TRIGGER, USER
-
Fields inherited from interface org.h2.util.HasSQL
ADD_PLAN_INFORMATION, DEFAULT_SQL_FLAGS, NO_CASTS, QUOTE_ONLY_WHEN_REQUIRED, REPLACE_LOBS_FOR_TRACE, TRACE_SQL_FLAGS
-
-
Constructor Summary
Constructors Constructor Description TriggerObject(Schema schema, int id, java.lang.String name, Table table)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Close the trigger.private static java.lang.Object[]
convertToObjectList(Row row, JdbcConnection conn)
private static JdbcResultSet
createResultSet(JdbcConnection conn, Table table, Row row, boolean updatable)
void
fire(SessionLocal session, int type, boolean beforeAction)
Call the trigger class if required.boolean
fireRow(SessionLocal session, Table table, Row oldRow, Row newRow, boolean beforeAction, boolean rollback)
Call the fire method of the user-defined trigger class if required.java.lang.String
getCreateSQL()
Construct the CREATE ...java.lang.String
getCreateSQLForCopy(Table targetTable, java.lang.String quotedName)
Build a SQL statement to re-create the object, or to create a copy of the object with a different name or referencing a different tableprivate DbException
getErrorExecutingTrigger(java.lang.Throwable e)
int
getQueueSize()
Table
getTable()
Get the table of this trigger.java.lang.String
getTriggerClassName()
Get the trigger class name.java.lang.String
getTriggerSource()
int
getType()
Get the object type.int
getTypeMask()
Returns the trigger type.java.lang.StringBuilder
getTypeNameList(java.lang.StringBuilder builder)
Append the trigger types to the given string builder.boolean
isBefore()
Check if this is a before trigger.boolean
isInsteadOf()
boolean
isNoWait()
boolean
isOnRollback()
boolean
isRowBased()
boolean
isSelectTrigger()
Check whether this is a select trigger.private void
load()
private Trigger
loadFromSource()
void
removeChildrenAndResources(SessionLocal session)
Delete all dependent children objects and resources of this object.void
setBefore(boolean before)
void
setInsteadOf(boolean insteadOf)
void
setNoWait(boolean noWait)
void
setOnRollback(boolean onRollback)
void
setQueueSize(int size)
void
setRowBased(boolean rowBased)
private void
setTriggerAction(java.lang.String triggerClassName, java.lang.String source, boolean force)
void
setTriggerClassName(java.lang.String triggerClassName, boolean force)
Set the trigger class name and load the class if possible.void
setTriggerSource(java.lang.String source, boolean force)
Set the trigger source code and compile it if possible.void
setTypeMask(int typeMask)
Set the trigger type.-
Methods inherited from class org.h2.schema.SchemaObject
getSchema, getSQL, getSQL, isHidden
-
Methods inherited from class org.h2.engine.DbObject
checkRename, getChildren, getComment, getCreateSQLForMeta, getDatabase, getDropSQL, getId, getModificationId, getName, invalidate, isTemporary, isValid, rename, setComment, setModified, setObjectName, setTemporary, toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.h2.util.HasSQL
getTraceSQL
-
-
-
-
Field Detail
-
DEFAULT_QUEUE_SIZE
public static final int DEFAULT_QUEUE_SIZE
The default queue size.- See Also:
- Constant Field Values
-
insteadOf
private boolean insteadOf
-
before
private boolean before
-
typeMask
private int typeMask
-
rowBased
private boolean rowBased
-
onRollback
private boolean onRollback
-
queueSize
private int queueSize
-
noWait
private boolean noWait
-
table
private Table table
-
triggerClassName
private java.lang.String triggerClassName
-
triggerSource
private java.lang.String triggerSource
-
triggerCallback
private Trigger triggerCallback
-
-
Method Detail
-
setBefore
public void setBefore(boolean before)
-
isInsteadOf
public boolean isInsteadOf()
-
setInsteadOf
public void setInsteadOf(boolean insteadOf)
-
load
private void load()
-
loadFromSource
private Trigger loadFromSource()
-
setTriggerClassName
public void setTriggerClassName(java.lang.String triggerClassName, boolean force)
Set the trigger class name and load the class if possible.- Parameters:
triggerClassName
- the name of the trigger classforce
- whether exceptions (due to missing class or access rights) should be ignored
-
setTriggerSource
public void setTriggerSource(java.lang.String source, boolean force)
Set the trigger source code and compile it if possible.- Parameters:
source
- the source code of a method returning aTrigger
force
- whether exceptions (due to syntax error) should be ignored
-
setTriggerAction
private void setTriggerAction(java.lang.String triggerClassName, java.lang.String source, boolean force)
-
fire
public void fire(SessionLocal session, int type, boolean beforeAction)
Call the trigger class if required. This method does nothing if the trigger is not defined for the given action. This method is called before or after any rows have been processed, once for each statement.- Parameters:
session
- the sessiontype
- the trigger typebeforeAction
- if this method is called before applying the changes
-
convertToObjectList
private static java.lang.Object[] convertToObjectList(Row row, JdbcConnection conn)
-
fireRow
public boolean fireRow(SessionLocal session, Table table, Row oldRow, Row newRow, boolean beforeAction, boolean rollback)
Call the fire method of the user-defined trigger class if required. This method does nothing if the trigger is not defined for the given action. This method is called before or after a row is processed, possibly many times for each statement.- Parameters:
session
- the sessiontable
- the tableoldRow
- the old rownewRow
- the new rowbeforeAction
- true if this method is called before the operation is appliedrollback
- when the operation occurred within a rollback- Returns:
- true if no further action is required (for 'instead of' triggers)
-
createResultSet
private static JdbcResultSet createResultSet(JdbcConnection conn, Table table, Row row, boolean updatable) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
getErrorExecutingTrigger
private DbException getErrorExecutingTrigger(java.lang.Throwable e)
-
getTypeMask
public int getTypeMask()
Returns the trigger type.- Returns:
- the trigger type
-
setTypeMask
public void setTypeMask(int typeMask)
Set the trigger type.- Parameters:
typeMask
- the type
-
setRowBased
public void setRowBased(boolean rowBased)
-
isRowBased
public boolean isRowBased()
-
setQueueSize
public void setQueueSize(int size)
-
getQueueSize
public int getQueueSize()
-
setNoWait
public void setNoWait(boolean noWait)
-
isNoWait
public boolean isNoWait()
-
setOnRollback
public void setOnRollback(boolean onRollback)
-
isOnRollback
public boolean isOnRollback()
-
getCreateSQLForCopy
public java.lang.String getCreateSQLForCopy(Table targetTable, java.lang.String quotedName)
Description copied from class:DbObject
Build a SQL statement to re-create the object, or to create a copy of the object with a different name or referencing a different table- Specified by:
getCreateSQLForCopy
in classDbObject
- Parameters:
targetTable
- the new tablequotedName
- the quoted name- Returns:
- the SQL statement
-
getTypeNameList
public java.lang.StringBuilder getTypeNameList(java.lang.StringBuilder builder)
Append the trigger types to the given string builder.- Parameters:
builder
- the builder- Returns:
- the passed string builder
-
getCreateSQL
public java.lang.String getCreateSQL()
Description copied from class:DbObject
Construct the CREATE ... SQL statement for this object.- Specified by:
getCreateSQL
in classDbObject
- Returns:
- the SQL statement
-
getType
public int getType()
Description copied from class:DbObject
Get the object type.
-
removeChildrenAndResources
public void removeChildrenAndResources(SessionLocal session)
Description copied from class:DbObject
Delete all dependent children objects and resources of this object.- Specified by:
removeChildrenAndResources
in classDbObject
- Parameters:
session
- the session
-
getTable
public Table getTable()
Get the table of this trigger.- Returns:
- the table
-
isBefore
public boolean isBefore()
Check if this is a before trigger.- Returns:
- true if it is
-
getTriggerClassName
public java.lang.String getTriggerClassName()
Get the trigger class name.- Returns:
- the class name
-
getTriggerSource
public java.lang.String getTriggerSource()
-
close
public void close() throws java.sql.SQLException
Close the trigger.- Throws:
java.sql.SQLException
- on failure
-
isSelectTrigger
public boolean isSelectTrigger()
Check whether this is a select trigger.- Returns:
- true if it is
-
-