Package org.h2.constraint
Class ConstraintUnique
- java.lang.Object
-
- org.h2.engine.DbObject
-
- org.h2.schema.SchemaObject
-
- org.h2.constraint.Constraint
-
- org.h2.constraint.ConstraintUnique
-
- All Implemented Interfaces:
java.lang.Comparable<Constraint>
,HasSQL
public class ConstraintUnique extends Constraint
A unique constraint. This object always backed by a unique index.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.h2.constraint.Constraint
Constraint.Type
-
-
Field Summary
Fields Modifier and Type Field Description private IndexColumn[]
columns
private Index
index
private boolean
indexOwner
private boolean
primaryKey
-
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 ConstraintUnique(Schema schema, int id, java.lang.String name, Table table, boolean primaryKey)
-
Method Summary
All Methods Instance Methods Concrete Methods 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 namejava.lang.String
getCreateSQL()
Construct the CREATE ...java.lang.String
getCreateSQLForCopy(Table forTable, 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 java.lang.String
getCreateSQLForCopy(Table forTable, java.lang.String quotedName, boolean internalIndex)
java.lang.String
getCreateSQLWithoutIndexes()
Get the SQL statement to create this constraint.Index
getIndex()
Get the index of this constraint in the source table, or null if no index is used.java.util.HashSet<Column>
getReferencedColumns(Table table)
Get all referenced columns.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[] columns)
void
setIndex(Index index, boolean isOwner)
Set the index to use for this unique constraint.void
setIndexOwner(Index index)
This index is now the owner of the specified index.boolean
usesIndex(Index idx)
Check if this constraint needs the specified index.-
Methods inherited from class org.h2.constraint.Constraint
compareTo, getExpression, getReferencedConstraint, getRefTable, getTable, getType, isEverything, isHidden
-
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
-
-
-
-
Field Detail
-
index
private Index index
-
indexOwner
private boolean indexOwner
-
columns
private IndexColumn[] columns
-
primaryKey
private final boolean primaryKey
-
-
Method Detail
-
getConstraintType
public Constraint.Type getConstraintType()
Description copied from class:Constraint
The constraint type name- Specified by:
getConstraintType
in classConstraint
- Returns:
- the name
-
getCreateSQLForCopy
public java.lang.String getCreateSQLForCopy(Table forTable, 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:
forTable
- the new tablequotedName
- the quoted name- Returns:
- the SQL statement
-
getCreateSQLForCopy
private java.lang.String getCreateSQLForCopy(Table forTable, java.lang.String quotedName, boolean internalIndex)
-
getCreateSQLWithoutIndexes
public java.lang.String getCreateSQLWithoutIndexes()
Description copied from class:Constraint
Get the SQL statement to create this constraint.- Specified by:
getCreateSQLWithoutIndexes
in classConstraint
- Returns:
- the SQL statement
-
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
-
setColumns
public void setColumns(IndexColumn[] columns)
-
getColumns
public IndexColumn[] getColumns()
-
setIndex
public void setIndex(Index index, boolean isOwner)
Set the index to use for this unique constraint.- Parameters:
index
- the indexisOwner
- true if the index is generated by the system and belongs to this 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 classDbObject
- 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 classConstraint
- Parameters:
session
- the sessiont
- the tableoldRow
- the old rownewRow
- the new row
-
usesIndex
public boolean usesIndex(Index idx)
Description copied from class:Constraint
Check if this constraint needs the specified index.- Specified by:
usesIndex
in classConstraint
- 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 classConstraint
- Parameters:
index
- the index
-
getReferencedColumns
public java.util.HashSet<Column> getReferencedColumns(Table table)
Description copied from class:Constraint
Get all referenced columns.- Specified by:
getReferencedColumns
in classConstraint
- Parameters:
table
- the table- Returns:
- the set of referenced columns
-
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 classConstraint
- 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 classConstraint
- 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 classConstraint
- Returns:
- the index
-
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 classConstraint
-
-