Package org.h2.constraint

# Class ConstraintReferential

java.lang.Object
org.h2.engine.DbObject
org.h2.schema.SchemaObject
org.h2.constraint.Constraint
org.h2.constraint.ConstraintReferential

All Implemented Interfaces:
  `Comparable<Constraint>`, `HasSQL`

public class ConstraintReferential extends Constraint
A referential constraint.

## Nested Class Summary

## Nested classes/interfaces inherited from class org.h2.constraint.Constraint

`Constraint.Type`

## Field Summary

### Fields inherited from class org.h2.constraint.Constraint

`table`

### 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
`ConstraintReferential(Schema schema, int id, String name, Table table)`

## Method Summary

Modifier and Type
Method
Description
`void`
`checkExistingData(SessionLocal session)`
Check the existing data.
`void`
`checkRow(SessionLocal session, Table t, Row oldRow, Row newRow)`
Check if this row fulfils the constraint.
`IndexColumn[]`
`getColumns()`
`Constraint.Type`
`getConstraintType()`
The constraint type name
`String`
`getCreateSQL()`
Construct the CREATE ...
`String`
`getCreateSQLForCopy(Table forTable, String quotedName)`
Create the SQL statement of this object so a copy of the table can be made.
`String`
`getCreateSQLForCopy(Table forTable, Table forRefTable, String quotedName, boolean internalIndex)`
Create the SQL statement of this object so a copy of the table can be made.
`String`
`getCreateSQLWithoutIndexes()`
Get the SQL statement to create this constraint.
`ConstraintActionType`
`getDeleteAction()`
`Index`
`getIndex()`
Get the index of this constraint in the source table, or null if no index is used.
`IndexColumn[]`
`getRefColumns()`
`HashSet<Column>`
`getReferencedColumns(Table table)`
Get all referenced columns.
`ConstraintUnique`
`getReferencedConstraint()`
Returns the referenced unique constraint, or null.
`Table`
`getRefTable()`
`ConstraintActionType`
`getUpdateAction()`
`boolean`
`isBefore()`
Check if this constraint needs to be checked before updating the data.
`void`
`rebuild()`
This method is called after a related table has changed (the table was renamed, or columns have been renamed).
`void`
`removeChildrenAndResources(SessionLocal session)`
Delete all dependent children objects and resources of this object.
`void`
`setColumns(IndexColumn[] cols)`
`void`
`setDeleteAction(ConstraintActionType action)`
Set the action to apply (restrict, cascade,...) on a delete.
`void`
`setIndex(Index index, boolean isOwner)`
Set the index to use for this constraint.
`void`
`setIndexOwner(Index index)`
This index is now the owner of the specified index.
`void`
`setRefColumns(IndexColumn[] refCols)`
`void`
`setRefConstraint(ConstraintUnique refConstraint)`
Set the unique constraint of the referenced table to use for this constraint.
`void`
`setRefTable(Table refTable)`
`void`
`setUpdateAction(ConstraintActionType action)`
Set the action to apply (restrict, cascade,...) on an update.
`void`
`updateOnTableColumnRename()`
Update the constraint SQL when a referenced column is renamed.
`boolean`
`usesIndex(Index idx)`
Check if this constraint needs the specified index.

### Methods inherited from class org.h2.constraint.Constraint

`compareTo, getExpression, getTable, getType, isEverything`

### Methods inherited from class org.h2.schema.SchemaObject

`getSchema, getSQL, getSQL`

### 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`

## Constructor Details

### ConstraintReferential

public ConstraintReferential(Schema schema, int id, String name, Table table)

## Method Details

### getConstraintType

public Constraint.Type getConstraintType()
Description copied from class: `Constraint`
The constraint type name

Specified by:
  `getConstraintType` in class `Constraint`
Returns:
  the name

### getCreateSQLForCopy

public String getCreateSQLForCopy(Table forTable, String quotedName)
Create the SQL statement of this object so a copy of the table can be made.

Overrides:
  `getCreateSQLForCopy` in class `DbObject`
Parameters:
  `forTable` - the table to create the object for
  `quotedName` - the name of this object (quoted if necessary)
Returns:
  the SQL statement

### getCreateSQLForCopy

public String getCreateSQLForCopy(Table forTable, Table forRefTable, String quotedName, boolean internalIndex)
Create the SQL statement of this object so a copy of the table can be made.

Parameters:
  `forTable` - the table to create the object for
  `forRefTable` - the referenced table
  `quotedName` - the name of this object (quoted if necessary)
  `internalIndex` - add the index name to the statement
Returns:
  the SQL statement

### getCreateSQLWithoutIndexes

public String getCreateSQLWithoutIndexes()
Description copied from class: `Constraint`
Get the SQL statement to create this constraint.

Specified by:
  `getCreateSQLWithoutIndexes` in class `Constraint`
Returns:
  the SQL statement

### getCreateSQL

public String getCreateSQL()
Description copied from class: `DbObject`
Construct the CREATE ... SQL statement for this object.

Specified by:
  `getCreateSQL` in class `DbObject`
Returns:
  the SQL statement

### setColumns

public void setColumns(IndexColumn[] cols)

### getColumns

public IndexColumn[] getColumns()

### getReferencedColumns

public HashSet<Column> getReferencedColumns(Table table)
Description copied from class: `Constraint`
Get all referenced columns.

Specified by:
  `getReferencedColumns` in class `Constraint`
Parameters:
  `table` - the table
Returns:
  the set of referenced columns

### setRefColumns

public void setRefColumns(IndexColumn[] refCols)

### getRefColumns

public IndexColumn[] getRefColumns()

### setRefTable

public void setRefTable(Table refTable)

### setIndex

public void setIndex(Index index, boolean isOwner)
Set the index to use for this constraint.

Parameters:
  `index` - the index
  `isOwner` - true if the index is generated by the system and belongs to this constraint

### setRefConstraint

public void setRefConstraint(ConstraintUnique refConstraint)
Set the unique constraint of the referenced table to use for this constraint.

Parameters:
  `refConstraint` - the unique constraint

### 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 class `DbObject`
Parameters:
  `session` - the session

### checkRow

public void checkRow(SessionLocal session, Table t, Row oldRow, Row newRow)
Description copied from class: `Constraint`
Check if this row fulfils the constraint. This method throws an exception if not.

Specified by:
  `checkRow` in class `Constraint`
Parameters:
  `session` - the session
  `t` - the table
  `oldRow` - the old row
  `newRow` - the new row

### getDeleteAction

public ConstraintActionType getDeleteAction()

### setDeleteAction

public void setDeleteAction(ConstraintActionType action)
Set the action to apply (restrict, cascade,...) on a delete.

Parameters:
  `action` - the action

### updateOnTableColumnRename

public void updateOnTableColumnRename()
Update the constraint SQL when a referenced column is renamed.

### getUpdateAction

public ConstraintActionType getUpdateAction()

### setUpdateAction

public void setUpdateAction(ConstraintActionType action)
Set the action to apply (restrict, cascade,...) on an update.

Parameters:
  `action` - the action

### rebuild

public void rebuild()
Description copied from class: `Constraint`
This method is called after a related table has changed (the table was renamed, or columns have been renamed).

Specified by:
  `rebuild` in class `Constraint`

### getRefTable

public Table getRefTable()

Overrides:
  `getRefTable` in class `Constraint`

### usesIndex

public boolean usesIndex(Index idx)
Description copied from class: `Constraint`
Check if this constraint needs the specified index.

Specified by:
  `usesIndex` in class `Constraint`
Parameters:
  `idx` - the index
Returns:
  true if the index is used

### setIndexOwner

public void setIndexOwner(Index index)
Description copied from class: `Constraint`
This index is now the owner of the specified index.

Specified by:
  `setIndexOwner` in class `Constraint`
Parameters:
  `index` - the index

### isBefore

public boolean isBefore()
Description copied from class: `Constraint`
Check if this constraint needs to be checked before updating the data.

Specified by:
  `isBefore` in class `Constraint`
Returns:
  true if it must be checked before updating

### checkExistingData

public void checkExistingData(SessionLocal session)
Description copied from class: `Constraint`
Check the existing data. This method is called if the constraint is added after data has been inserted into the table.

Specified by:
  `checkExistingData` in class `Constraint`
Parameters:
  `session` - the session

### getIndex

public Index getIndex()
Description copied from class: `Constraint`
Get the index of this constraint in the source table, or null if no index is used.

Overrides:
  `getIndex` in class `Constraint`
Returns:
  the index

### getReferencedConstraint

public ConstraintUnique getReferencedConstraint()
Description copied from class: `Constraint`
Returns the referenced unique constraint, or null.

Overrides:
  `getReferencedConstraint` in class `Constraint`
Returns:
  the referenced unique constraint, or null