declare_foreign_key
Description:
public bool declare_foreign_key (MetaStruct? mstruct, string fk_name, string? catalog, string? schema, string table, string? ref_catalog, string? ref_schema, string ref_table, string[] colnames, string[] ref_colnames) throws Error
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
).
Parameters:
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) |
Returns:
true if no error occurred |