Foreign Keys
This section describes how to access information about foreign keys by retrieving the ForeignKeys schema collection.
Retrieving Foreign Key Information
To retrieve the ForeignKeys schema collection, call the GetSchema method of the PostgreSQLConnection class. You can restrict foreign key information by the catalog, schema, or table name.
Access the results in the DataTable returned. The following example lists the foreign keys for the "postgres"."schema01".Orders table.
C#
String connectionString = "User=postgres;Password=admin;Database=postgres;Server=127.0.0.1;Port=5432"; using (PostgreSQLConnection conn = new PostgreSQLConnection(connectionString)) { conn.Open(); DataTable databaseSchema = conn.GetSchema("ForeignKeys", new string[] {"postgres","schema01","Orders"}); foreach (DataRow row in databaseSchema.Rows) { Console.WriteLine(row["CONSTRAINT_NAME"]); Console.WriteLine(row["TABLE_NAME"]); } }
VB.NET
Dim connectionString As String = "User=postgres;Password=admin;Database=postgres;Server=127.0.0.1;Port=5432" Using conn As New PostgreSQLConnection(connectionString) conn.Open() Dim databaseSchema As DataTable = conn.GetSchema("ForeignKeys", New String() {"postgres","schema01","Orders") For Each row As DataRow In databaseSchema.Rows Console.WriteLine(row("CONSTRAINT_NAME")) Console.WriteLine(row("TABLE_NAME")) Next End Using
Columns Returned
The ForeignKeys schema collection returns the following information about the foreign keys in PostgreSQL.
Column Name | Data Type | Description |
CONSTRAINT_CATALOG | System.String | The database containing the foreign key. |
CONSTRAINT_SCHEMA | System.String | The schema containing the foreign key. |
CONSTRAINT_NAME | System.String | The name of the foreign key. |
CONSTRAINT_TYPE | System.String | Returns FOREIGN KEY. |
TABLE_CATALOG | System.String | The database of the table containing the foreign key. |
TABLE_SCHEMA | System.String | The schema of the table containing the foreign key. |
TABLE_NAME | System.String | The name of the table containing the foreign key. |
IS_DEFERRABLE | System.String | Whether the foreign key is deferrable. This value is YES or NO. |
INITIALLY_DEFERRED | System.String | Whether the foreign is initially deferrable. This value is YES or NO. |