Defines a new declared foreign key into this.
If another declared foreign key is already defined between the two tables and with the same name, then it is first removed.
This method begins a transaction if possible (ie. none is already started), and if it can't, then if there is an error, the job may be partially done.
A check is always performed to make sure all the database objects actually exist and returns an error if not. The check is performed
using mstruct if it's not null (in this case only the tables already represented in
mstruct will be considered, in other words: mstruct will not be modified), and using an internal
MetaStruct is null.
The catalog, schema, table, ref_catalog, ref_schema and ref_table
must follow the SQL identifiers naming convention, see the <link linkend="gen:sql_identifiers">SQL identifiers</link>
section. The same convention needs to be respected for the strings in conames and ref_colnames.
If catalog is not null, then schema must also be not
null (the same restriction applies to ref_catalog and ref_schema).
| this | |
| mstruct |
a MetaStruct, or null |
| fk_name |
the name of the foreign key to declare |
| catalog |
the catalog in which the table (for which the foreign key is for) is, or null |
| schema |
the schema in which the table (for which the foreign key is for) is, or null |
| table |
the name of the table (for which the foreign key is for) |
| ref_catalog |
the catalog in which the referenced table is, or null |
| ref_schema |
the schema in which the referenced table is, or null |
| ref_table |
the name of the referenced table |
| colnames |
an array of column names from the table for which the foreign key is for |
| ref_colnames |
an array of column names from the referenced table |
| nb_cols |
the number of columns involved (>0) |
|
true if no error occurred |