Class ReferencedKeyConstraintDescriptor
- java.lang.Object
-
- org.apache.derby.iapi.sql.dictionary.TupleDescriptor
-
- org.apache.derby.iapi.sql.dictionary.UniqueTupleDescriptor
-
- org.apache.derby.iapi.sql.dictionary.ConstraintDescriptor
-
- org.apache.derby.iapi.sql.dictionary.KeyConstraintDescriptor
-
- org.apache.derby.iapi.sql.dictionary.ReferencedKeyConstraintDescriptor
-
- All Implemented Interfaces:
Dependable
,Dependent
,Provider
public class ReferencedKeyConstraintDescriptor extends KeyConstraintDescriptor
A ReferencedConstraintDeescriptor is a primary key or a unique key that is referenced by a foreign key.
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
checkedSelfReferencing
private int
constraintType
public interface to this descriptor: public boolean hasSelfReferencingFK(ConstraintDescriptorList cdl, int type) throws StandardException; public ConstraintDescriptorList getForeignKeyConstraints(int type) throws StandardException; public boolean isReferenced(); public int getReferenceCount(); public int incrementReferenceCount(); public int decrementReferenceCount();private ConstraintDescriptorList
fkConstraintList
private ConstraintDescriptorList
fkEnabledConstraintList
private boolean
hasSelfReferencing
(package private) int
referenceCount
-
Fields inherited from class org.apache.derby.iapi.sql.dictionary.KeyConstraintDescriptor
indexId
-
Fields inherited from class org.apache.derby.iapi.sql.dictionary.ConstraintDescriptor
ALL, constraintId, constraintName, DISABLED, ENABLED, SYSCONSTRAINTS_STATE_FIELD, table
-
Fields inherited from interface org.apache.derby.catalog.Dependable
ACTIVATION, ALIAS, COLUMNS_IN_TABLE, COLUMNS_PERMISSION, CONGLOMERATE, CONSTRAINT, DEFAULT, FILE, HEAP, INDEX, PERM, PREPARED_STATEMENT, ROLE_GRANT, ROUTINE_PERMISSION, SCHEMA, SEQUENCE, STORED_PREPARED_STATEMENT, TABLE, TABLE_PERMISSION, TRIGGER, VIEW
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
ReferencedKeyConstraintDescriptor(int constraintType, DataDictionary dataDictionary, TableDescriptor table, java.lang.String constraintName, boolean deferrable, boolean initiallyDeferred, int[] columns, UUID constraintId, UUID indexId, SchemaDescriptor schemaDesc, boolean enforced, int referenceCount)
Constructor for a KeyConstraintDescriptorImpl
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
checkType(int type)
int
decrementReferenceCount()
Decrement the reference count by one.int
getConstraintType()
Gets an identifier telling what type of descriptor it is (UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK).ConstraintDescriptorList
getForeignKeyConstraints(int type)
Get the referencing foreign key constraintsConstraintDescriptorList
getNonSelfReferencingFK(int type)
Am I referenced by a FK on another table?int
getReferenceCount()
Get the number of enforced fks that reference this key.boolean
hasSelfReferencingFK(ConstraintDescriptorList cdl, int type)
Am I referenced by a FK on the same table?int
incrementReferenceCount()
Bump the reference count by one.boolean
isReferenced()
Is this constraint referenced?boolean
needsToFire(int stmtType, int[] modifiedCols)
Does this constraint need to fire on this type of DML?-
Methods inherited from class org.apache.derby.iapi.sql.dictionary.KeyConstraintDescriptor
getConglomerateId, getIndexConglomerateDescriptor, getIndexId, getIndexUUIDString, hasBackingIndex, toString
-
Methods inherited from class org.apache.derby.iapi.sql.dictionary.ConstraintDescriptor
areColumnsComparable, columnIntersects, deferrable, doColumnsIntersect, drop, enforced, getClassType, getColumnDescriptors, getConstraintName, getConstraintText, getDependableFinder, getDescriptorName, getDescriptorType, getKeyColumns, getObjectID, getObjectName, getReferencedColumns, getSchemaDescriptor, getTableDescriptor, getTableId, getUUID, initiallyDeferred, isValid, makeInvalid, prepareToInvalidate, setDeferrable, setEnforced, setInitiallyDeferred
-
Methods inherited from class org.apache.derby.iapi.sql.dictionary.TupleDescriptor
getColumnDependableFinder, getDataDictionary, getDependableFinder, isPersistent, setDataDictionary
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.derby.catalog.Dependable
isPersistent
-
-
-
-
Field Detail
-
constraintType
private final int constraintType
public interface to this descriptor:- public boolean hasSelfReferencingFK(ConstraintDescriptorList cdl, int type) throws StandardException;
- public ConstraintDescriptorList getForeignKeyConstraints(int type) throws StandardException;
- public boolean isReferenced();
- public int getReferenceCount();
- public int incrementReferenceCount();
- public int decrementReferenceCount();
-
referenceCount
int referenceCount
-
fkEnabledConstraintList
private ConstraintDescriptorList fkEnabledConstraintList
-
fkConstraintList
private ConstraintDescriptorList fkConstraintList
-
checkedSelfReferencing
private boolean checkedSelfReferencing
-
hasSelfReferencing
private boolean hasSelfReferencing
-
-
Constructor Detail
-
ReferencedKeyConstraintDescriptor
protected ReferencedKeyConstraintDescriptor(int constraintType, DataDictionary dataDictionary, TableDescriptor table, java.lang.String constraintName, boolean deferrable, boolean initiallyDeferred, int[] columns, UUID constraintId, UUID indexId, SchemaDescriptor schemaDesc, boolean enforced, int referenceCount)
Constructor for a KeyConstraintDescriptorImpl- Parameters:
constraintType
- The type of the constraintdataDictionary
- The data dictionary that this descriptor lives intable
- The descriptor of the table the constraint is onconstraintName
- The name of the constraint.deferrable
- If the constraint can be deferred.initiallyDeferred
- If the constraint starts life deferred.columns
- columns involved in the constraintconstraintId
- UUID of constraintindexId
- The UUID for the backing indexschemaDesc
- The SchemaDescriptor for the constraintenforced
- is the constraint enforced?referenceCount
- number of FKs (enforced only)
-
-
Method Detail
-
getConstraintType
public final int getConstraintType()
Description copied from class:ConstraintDescriptor
Gets an identifier telling what type of descriptor it is (UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK).- Specified by:
getConstraintType
in classConstraintDescriptor
- Returns:
- An identifier telling what type of descriptor it is (UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK).
-
hasSelfReferencingFK
public boolean hasSelfReferencingFK(ConstraintDescriptorList cdl, int type) throws StandardException
Am I referenced by a FK on the same table?- Parameters:
cdl
- ConstraintDescriptorList for the tabletype
- ConstraintDescriptor.(ENABLED|DISABLED|ALL)- Returns:
- true/false
- Throws:
StandardException
- on error
-
getNonSelfReferencingFK
public ConstraintDescriptorList getNonSelfReferencingFK(int type) throws StandardException
Am I referenced by a FK on another table? Return the list of those foreign constraints.- Parameters:
type
- ConstraintDescriptor.(ENABLED|DISABLED|ALL)- Returns:
- list of constraints
- Throws:
StandardException
- on error
-
getForeignKeyConstraints
public ConstraintDescriptorList getForeignKeyConstraints(int type) throws StandardException
Get the referencing foreign key constraints- Parameters:
type
- ConstraintDescriptor.(ENABLED|DISABLED|ALL)- Returns:
- the list of constraints (ConstraintDescriptorListImpl)
- Throws:
StandardException
- on error
-
isReferenced
public boolean isReferenced()
Is this constraint referenced? Returns true if there are enforced fks that reference this constraint.- Overrides:
isReferenced
in classConstraintDescriptor
- Returns:
- false
-
getReferenceCount
public int getReferenceCount()
Get the number of enforced fks that reference this key.- Overrides:
getReferenceCount
in classConstraintDescriptor
- Returns:
- the number of fks
-
incrementReferenceCount
public int incrementReferenceCount()
Bump the reference count by one.- Returns:
- the number of fks
-
decrementReferenceCount
public int decrementReferenceCount()
Decrement the reference count by one.- Returns:
- the number of fks
-
needsToFire
public boolean needsToFire(int stmtType, int[] modifiedCols)
Does this constraint need to fire on this type of DML? For referenced keys, fire if referenced by a fk, and stmt is delete or bulk insert replace, or stmt is update and columns intersect.- Specified by:
needsToFire
in classConstraintDescriptor
- Parameters:
stmtType
- the type of DML (StatementType.INSERT|StatementType.UPDATE|StatementType.DELETE)modifiedCols
- the columns modified, or null for all- Returns:
- true/false
-
checkType
private void checkType(int type) throws StandardException
- Throws:
StandardException
-
-