org.h2.constraint
Class ConstraintUnique

java.lang.Object
  extended by org.h2.engine.DbObjectBase
      extended by org.h2.schema.SchemaObjectBase
          extended by org.h2.constraint.Constraint
              extended by org.h2.constraint.ConstraintUnique
All Implemented Interfaces:
java.lang.Comparable<Constraint>, DbObject, SchemaObject

public class ConstraintUnique
extends Constraint

A unique constraint. This object always backed by a unique index.


Field Summary
 
Fields inherited from class org.h2.constraint.Constraint
CHECK, PRIMARY_KEY, REFERENTIAL, table, UNIQUE
 
Fields inherited from class org.h2.engine.DbObjectBase
comment, database, trace
 
Fields inherited from interface org.h2.engine.DbObject
AGGREGATE, COMMENT, CONSTANT, CONSTRAINT, FUNCTION_ALIAS, INDEX, RIGHT, ROLE, SCHEMA, SEQUENCE, SETTING, TABLE_OR_VIEW, TRIGGER, USER, USER_DATATYPE
 
Constructor Summary
ConstraintUnique(Schema schema, int id, java.lang.String name, Table table, boolean primaryKey)
           
 
Method Summary
 void checkExistingData(Session session)
          Check the existing data.
 void checkRow(Session session, Table t, Row oldRow, Row newRow)
          Check if this row fulfils the constraint.
 boolean containsColumn(Column col)
          Check if this constraint contains the given column.
 IndexColumn[] getColumns()
           
 java.lang.String getConstraintType()
          The constraint type name
 java.lang.String getCreateSQL()
          Build a SQL statement to re-create this object.
 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 table
 java.lang.String getCreateSQLWithoutIndexes()
          Get the SQL statement to create this constraint.
 Index getUniqueIndex()
          Get the unique index used to enforce this constraint, or null if no index is used.
 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(Session session)
          Remove all dependent objects and free all resources (files, blocks in files) 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
checkRename, compareTo, getDropSQL, getRefTable, getTable, getType, isHidden
 
Methods inherited from class org.h2.schema.SchemaObjectBase
getSchema, getSQL, initSchemaObjectBase
 
Methods inherited from class org.h2.engine.DbObjectBase
getChildren, getComment, getDatabase, getId, getModificationId, getName, initDbObjectBase, invalidate, isTemporary, 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.engine.DbObject
getChildren, getComment, getDatabase, getId, getModificationId, getName, isTemporary, rename, setComment, setModified, setTemporary
 

Constructor Detail

ConstraintUnique

public ConstraintUnique(Schema schema,
                        int id,
                        java.lang.String name,
                        Table table,
                        boolean primaryKey)
Method Detail

getConstraintType

public java.lang.String getConstraintType()
Description copied from class: Constraint
The constraint type name

Specified by:
getConstraintType in class Constraint
Returns:
the name

getCreateSQLForCopy

public java.lang.String getCreateSQLForCopy(Table forTable,
                                            java.lang.String quotedName)
Description copied from class: DbObjectBase
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 interface DbObject
Specified by:
getCreateSQLForCopy in class DbObjectBase
Parameters:
forTable - the new table name
quotedName - the new quoted name
Returns:
the SQL statement

getCreateSQLWithoutIndexes

public java.lang.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 java.lang.String getCreateSQL()
Description copied from class: DbObjectBase
Build a SQL statement to re-create this object.

Specified by:
getCreateSQL in interface DbObject
Specified by:
getCreateSQL in class DbObjectBase
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 index
isOwner - true if the index is generated by the system and belongs to this constraint

removeChildrenAndResources

public void removeChildrenAndResources(Session session)
Description copied from class: DbObjectBase
Remove all dependent objects and free all resources (files, blocks in files) of this object.

Specified by:
removeChildrenAndResources in interface DbObject
Specified by:
removeChildrenAndResources in class DbObjectBase
Parameters:
session - the session

checkRow

public void checkRow(Session 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

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

containsColumn

public boolean containsColumn(Column col)
Description copied from class: Constraint
Check if this constraint contains the given column.

Specified by:
containsColumn in class Constraint
Parameters:
col - the column
Returns:
true if it does

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(Session 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

getUniqueIndex

public Index getUniqueIndex()
Description copied from class: Constraint
Get the unique index used to enforce this constraint, or null if no index is used.

Specified by:
getUniqueIndex in class Constraint
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 class Constraint