sqlite.h


Extraer metadatos sobre una columna de una tabla

int sqlite3_table_column_metadata(
  sqlite3 *db,                /* Manipulador de conexión */
  const char *zDbName,        /* Nombre de base de datos o NULL */
  const char *zTableName,     /* Nombre de tabla */
  const char *zColumnName,    /* Nombre de columna */
  char const **pzDataType,    /* OUTPUT: Tipo de datos declarado */
  char const **pzCollSeq,     /* OUTPUT: Nombre de secuencia de comparación */
  int *pNotNull,              /* OUTPUT: True si existe restricción NOT NULL */
  int *pPrimaryKey,           /* OUTPUT: True si la columna es parte de PK */
  int *pAutoinc               /* OUTPUT: True si la columna es auto-increment */
);

Esta función devuelve los metadatos de una columna específica de una tabla de base de datos específica accesible usando el manipulador de conexión de base de datos pasado como primer argumento a la función.

La columna se identifica por el segundo, tercero y cuarto parámetros de esta función. El segundo parámetro es bien el nombre de la base de datos ("main", "temp" o una base de datos conectada) que contenga la tabla especificada o bien NULL. Si es NULL, se busca la tabla en todas las bases de datos conectadas usando el mismo algoritmo usado por el motor de base de datos para resolver referencias de tablas sin calificar.

El tercero y cuarto parámetros de esta función son los nombres de tabla y columna para la columna deseada, respectivamente. Ninguno de estos parámetros puede ser NULL.

Los metadatos son devueltos escritos en las posiciones de memoria pasadas como quinto y subsiguientes parámetros de esta función. Cualquiera de esos argumentos puede ser NULL, en cuyo caso el elemento correspondiente de metadatos es omitido.

ParámetroTipo de salidaDescripción
5thconst char*Tipo de datos
6thconst char*Nombre de la secuencia de comparación por defecto
7thintTrue si la columna tiene la restricción NOT NULL
8thintTrue si la columna es parte de la PRIMARY KEY
9thintTrue si la columna es AUTOINCREMENT

La memoria apuntada por los punteros a caracter devueltos por el tipo declarado y secuencia de comparación son válidos sólo hasta la siguiente llamada a cualquier función del API de SQLite.

Si la tabla especificada actualmente es una vista, se devuelve un código de error.

Si la columna especificada es "rowid", "oid" o "_rowid_" y se ha declarado una columna INTEGER PRIMARY KEY explícitamente, entonces los parámetros de salida se asignan para la columna declarada explícitamente. Si no hay una columna INTEGER PRIMARY KEY declarada explícitamente, los parámetros de salida se asignan de este modo:

data type: "INTEGER"
collation sequence: "BINARY"
not null: 0
primary key: 1
auto increment: 0

Esta función puede cartar uno o más esquemas desde los ficheros de base de datos. Si se produce un error durante este proceso, o si la tabla o columna requerida no puede ser encontrada, se devuelve un código de error y se deja un mensaje de error en la conexión de base de datos (para ser recuperado usando sqlite3_errmsg()).

Esta función sólo está disponible si la biblioteca fue compilada con el símbolo del preprocesador C SQLITE_ENABLE_COLUMN_METADATA definido.