declare_foreign_key


Description:

[ Version ( since = "4.2.4" ) ]
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

a MetaStore

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