odbc_primarykeys

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_primarykeysLista las columnas utilizadas en una clave primaria

Descripción

odbc_primarykeys(
    Odbc\Connection $odbc,
    ?string $catalog,
    string $schema,
    string $table
): Odbc\Result|false

Devuelve un objeto resultado que puede ser utilizado para recuperar los nombres de las columnas que componen la clave primaria de una tabla.

Parámetros

odbc

El conector identificador ODBC, ver odbc_connect() para más información.

catalog

The catalog ('qualifier' in ODBC 2 parlance).

schema

The schema ('owner' in ODBC 2 parlance).

table

Valores devueltos

Returns an ODBC result object o false en caso de error.

El conjunto de resultados contiene las siguientes columnas:

  • TABLE_CAT
  • TABLE_SCHEM
  • TABLE_NAME
  • COLUMN_NAME
  • KEY_SEQ
  • PK_NAME
Drivers can report additional columns.

El conjunto de resultados está ordenado por TABLE_CAT, TABLE_SCHEM, TABLE_NAME y KEY_SEQ.

Historial de cambios

Versión Descripción
8.4.0 odbc expects an Odbc\Connection instance now; previously, a resource was expected.
8.4.0 This function returns an Odbc\Result instance now; previously, a resource was returned.

Ejemplos

Ejemplo #1 Listar las Claves primarias de una Columna

<?php
$conn
= odbc_connect($dsn, $user, $pass);
$primarykeys = odbc_primarykeys($conn, 'TutorialDB', 'dbo', 'TEST');
while ((
$row = odbc_fetch_array($primarykeys))) {
print_r($row);
break;
// filas adicionales omitidas por brevedad
}
?>

El resultado del ejemplo sería algo similar a:

Array
(
    [TABLE_CAT] => TutorialDB
    [TABLE_SCHEM] => dbo
    [TABLE_NAME] => TEST
    [COLUMN_NAME] => id
    [KEY_SEQ] => 1
    [PK_NAME] => PK__TEST__3213E83FE141F843
)

Ver también

add a note

User Contributed Notes 4 notes

up
2
Rio Bautista (RRIT)
21 years ago
Sample to get the primary keys of an MSSQL table:

$cn = odbc_connect( "DSN", "sa", "pwd");

$rs = odbc_primarykeys( $cn, "database", "dbo", "table_name");

odbc_result_all($rs);
up
0
dan dot scott at ca dot ibm dot com
20 years ago
Responding to devendra_joshi:

In DB2 Universal Database for Linux, UNIX, and Windows the catalog views are accessed through the SYSCAT schema, not the SYSIBM schema -- so you should be issuing "SELECT * FROM SYSCAT.KEYCOLUSE" to list all of the columns that participate in a given key constraint.

A complete list of the catalog views for DB2 can be referenced at http://publib.boulder.ibm.com/infocenter/db2help/ by searching for 'catalog views' and selecting the top hit.
up
0
devendra_joshi at hotmail dot com
21 years ago
I want a list of primary keys of a table in db2

by using
'select * from SYSIBM.SYSKEYCOLUSE ' query i am getting the result on CLP
but when i am writing it in PHP as follows it returns 0 ROWS.

$mstmt="select * from SYSIBM.SYSKEYCOLUSE";
$b=odbc_exec($conn,$mstmt);
echo odbc_result_all($b);

where as if we write this code

$mstmt="select * from SYSIBM.SYSFUNCTIONS";
$b=odbc_exec($conn,$mstmt);
echo odbc_result_all($b);

it returns the correct data.
up
-3
ewilde aht bsmdevelopment dawt com
18 years ago
I was trying to find the primary keys from an SQLServer database through the ODBC interface. Funnily enough, the odbc_primarykeys function doesn't work with SQLServer (at least not my implementation of it). Fortunately, the sp_keys query is passed through and the answer returned. This code works (providing you know which database you're dealing with, which is a whole 'nother story).

// If this is SQLServer, we need to do a special operation to get the
// primary keys.
//
// Looks like the implementers of the ODBC interface just blew this
// one off, since the database has a query to return the info and the
// info even comes back with the same column names.
if ($DBType == "SQLServer")
$KeySel = odbc_exec($DBConn, "sp_pkeys ".$TableName);

// Otherwise, ask the database through ODBC for the primary key
// names.
else $KeySel = odbc_primarykeys($DBConn, $DatabaseName,
$DatabaseUser, $TableName);

while ($KeySel && ($KeyRec = odbc_fetch_array($KeySel)))
$KeyCol[$KeyRec["KEY_SEQ"]] = $KeyRec["COLUMN_NAME"];
To Top