Object representation of a single foreign key. Supports equality and inequality comparison of ForeignKeySchema.
name is the column name. parent is an instance of TableSchema
Note
ForeignKeySchema objects are automatically created for you by ForeignKeySchemaBuilder and loaded under schema.databases[name].tables[name].foreign_keys
Example
>>> schema.databases['sakila'].tables['rental'].foreign_keys.keys()
['fk_rental_customer', 'fk_rental_inventory', 'fk_rental_staff']
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].name
'fk_rental_inventory'
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].symbol
'fk_rental_inventory'
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].table_schema
'sakila'
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].table_name
'rental'
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].columns
['inventory_id']
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].referenced_table_name
'inventory'
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].referenced_table_schema
'sakila'
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].referenced_columns
['inventory_id']
#match_option will always be None in MySQL 5.x, 6.x
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].match_option
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].update_rule
'CASCADE'
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].delete_rule
'RESTRICT'
Generate the SQL to create (ADD) this foreign key
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].create()
'ADD CONSTRAINT `fk_rental_inventory`
FOREIGN KEY `fk_rental_inventory` (`inventory_id`)
REFERENCES `inventory` (`inventory_id`)
ON DELETE RESTRICT ON UPDATE CASCADE'
Generate the SQL to drop this foreign key
>>> schema.databases['sakila'].tables['rental'].foreign_keys['fk_rental_inventory'].drop()
'DROP FOREIGN KEY `fk_rental_inventory`'
Returns a dictionary loaded with all of the foreign keys available in the table. table must be an instance of TableSchema.
Note
This function is automatically called for you and set to schema.databases[name].tables[name].foreign_keys when you create an instance of SchemaObject