---
name: "Alzabo::Runtime::ForeignKey"
section: "3pm"
platform: "linux"
package: "libalzabo-perl"
version: "0.92-6"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Alzabo::Runtime::ForeignKey"
---

# Alzabo::Runtime::ForeignKey(3pm)

Foreign key objects

## NAME

Alzabo::Runtime::ForeignKey - Foreign key objects

## SYNOPSIS

```
  $fk->register_insert( $value_for_column );
  $fk->register_update( $new_value_for_column );
  $fk->register_delete( $row_being_deleted );
```

## DESCRIPTION

Objects in this class maintain referential integrity.  This is really only useful when your RDBMS can't do this itself (like MySQL without InnoDB).

## INHERITS FROM

`"Alzabo::ForeignKey"`

Note: all relevant documentation from the superclass has been merged into this document.

## METHODS

### table\_from

### table\_to

Returns the relevant `"Alzabo::Runtime::Table"` object.

### columns\_from

### columns\_to

Returns the relevant `"Alzabo::Runtime::Column"` object(s) for the property as an array.

### cardinality

Returns a two element array containing the two portions of the cardinality of the relationship.  Each portion will be either '1' or 'n'.

### from\_is\_dependent

### to\_is\_dependent

Returns a boolean value indicating whether there is a dependency from one table to the other.

### is\_one\_to\_one

### is\_one\_to\_many

### is\_many\_to\_one

Returns a boolean value indicating what kind of relationship the object represents.

### is\_same\_relationship\_as ($fk)

Given a foreign key object, this returns true if the two objects represent the same relationship.  However, the two objects may represent the same relationship from different table's points of view.

### register\_insert ($new\_value)

This method takes the proposed column value for a new row and makes sure that it is valid based on relationship that this object represents.

Throws: `"Alzabo::Exception::ReferentialIntegrity"`

### register\_update ($new\_value)

This method takes the proposed new value for a column and makes sure that it is valid based on relationship that this object represents.

Throws: `"Alzabo::Exception::ReferentialIntegrity"`

### register\_delete ("Alzabo::Runtime::Row" object)

Allows the foreign key to delete rows dependent on the row being deleted.  Note, this can lead to a chain reaction of cascading deletions.  You have been warned.

Throws: `"Alzabo::Exception::ReferentialIntegrity"`

### id

Returns a string uniquely identifying the foreign key.

### comment

Returns the comment associated with the foreign key object, if any.

## AUTHOR

Dave Rolsky, \<autarch@urth.org\>
