NAME
sqlite3_table_column_metadata —
Extract
Metadata About A Column Of A Table
SYNOPSIS
int
sqlite3_table_column_metadata(
sqlite3
*db,
const char *zDbName,
const
char *zTableName,
const char *zColumnName,
char const **pzDataType,
char const
**pzCollSeq,
int *pNotNull,
int
*pPrimaryKey,
int *pAutoinc );
DESCRIPTION
The sqlite3_table_column_metadata(X,D,T,C,....) routine returns information
about column C of table T in database D on database connection X. The
sqlite3_table_column_metadata() interface returns SQLITE_OK and fills in the
non-NULL pointers in the final five arguments with appropriate values if the
specified column exists. The sqlite3_table_column_metadata() interface returns
SQLITE_ERROR and if the specified column does not exist. If the column-name
parameter to sqlite3_table_column_metadata() is a NULL pointer, then this
routine simply checks for the existence of the table and returns SQLITE_OK if
the table exists and SQLITE_ERROR if it does not.
The column is identified by the second, third and fourth parameters to this
function. The second parameter is either the name of the database (i.e.
"main", "temp", or an attached database) containing the
specified table or NULL. If it is NULL, then all attached databases are
searched for the table using the same algorithm used by the database engine to
resolve unqualified table references.
The third and fourth parameters to this function are the table and column name
of the desired column, respectively.
Metadata is returned by writing to the memory locations passed as the 5th and
subsequent parameters to this function. Any of these arguments may be NULL, in
which case the corresponding element of metadata is omitted.
<table border="1">
<tr><th> Parameter <th> Output<br>Type <th>
Description
<tr><td> 5th <td> const char* <td> Data type
<tr><td> 6th <td> const char* <td> Name of default
collation sequence <tr><td> 7th <td> int <td> True if
column has a NOT NULL constraint <tr><td> 8th <td> int
<td> True if column is part of the PRIMARY KEY <tr><td> 9th
<td> int <td> True if column is AUTOINCREMENT </table>
The memory pointed to by the character pointers returned for the declaration
type and collation sequence is valid until the next call to any SQLite API
function.
If the specified table is actually a view, an error code is returned.
If the specified column is "rowid", "oid" or
"_rowid_" and the table is not a WITHOUT ROWID table and an INTEGER
PRIMARY KEY column has been explicitly declared, then the output parameters
are set for the explicitly declared column. If there is no INTEGER PRIMARY KEY
column, then the outputs for the rowid are set as follows:
data type: "INTEGER" collation sequence: "BINARY" not null: 0 primary
key: 1 auto increment: 0
This function causes all database schemas to be read from disk and parsed, if
that has not already been done, and returns an error if any errors are
encountered while loading the schema.
SEE ALSO
sqlite3(3)