PHP 8.0.0 Beta 4 available for testing


(PHP 4, PHP 5, PHP 7)

odbc_primarykeysListe les colonnes utilisées dans une clé primaire


odbc_primarykeys ( resource $connection_id , string $qualifier , string $owner , string $table ) : resource

Liste les colonnes utilisées dans une clé primaire de la table table.

Liste de paramètres


L'identifiant de connexion ODBC, voir la documentation de la fonction odbc_connect() pour plus de détails.




Valeurs de retour

Retourne un identifiant de résultat ODBC ou FALSE si une erreur survient.

Le résultat possède les colonnes suivantes :


add a note add a note

User Contributed Notes 4 notes

Rio Bautista (RRIT)
16 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");

dan dot scott at ca dot ibm dot com
15 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 by searching for 'catalog views' and selecting the top hit.
devendra_joshi at hotmail dot com
17 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";
echo odbc_result_all($b);

where as  if we write this code

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

it returns the correct data.
ewilde aht bsmdevelopment dawt com
14 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