PHP 8.4.2 Released!

odbc_primarykeys

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

odbc_primarykeysObtém as chaves primárias de uma tabela

Descrição

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

Retorna um objeto de resultado que pode ser usado para buscar os nomes das colunas que compõem a chave primária de uma tabela.

Parâmetros

odbc

O objeto da conexão ODBC. Consulte odbc_connect() para obter detalhes.

catalog

O catálogo ('qualifier' na linguagem ODBC 2).

schema

O esquema ('owner' na linguagem ODBC 2).

table

Valor Retornado

Retorna um objeto de resultado ODBC ou false em caso de falha.

O conjunto de resultados possui as seguintes colunas:

  • TABLE_CAT
  • TABLE_SCHEM
  • TABLE_NAME
  • COLUMN_NAME
  • KEY_SEQ
  • PK_NAME
Drivers podem listar colunas adicionais.

O conjunto de resultados é ordenado por TABLE_CAT, TABLE_SCHEM, TABLE_NAME e KEY_SEQ.

Registro de Alterações

Versão Descrição
8.4.0 odbc agora espera uma instância de Odbc\Connection; anteriormente, esperava um resource.
8.4.0 Esta função agora retorna uma instância de Odbc\Result; anteriormente, retornava um resource.

Exemplos

Exemplo #1 Lista as chaves primárias de uma coluna

<?php
$conn
= odbc_connect($dsn, $user, $pass);
$primarykeys = odbc_primarykeys($conn, 'TutorialDB', 'dbo', 'TEST');
while ((
$row = odbc_fetch_array($primarykeys))) {
print_r($row);
break;
// outras linhas omitidas por questões de brevidade
}
?>

O exemplo acima produzirá algo semelhante a:

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

Veja Também

  • odbc_tables() - Obtém a lista de nomes de tabelas armazenadas em uma fonte de dados específica
  • odbc_foreignkeys() - Recupera uma lista de chaves estrangeiras

adicione uma nota

Notas Enviadas por Usuários (em inglês) 4 notes

up
2
Rio Bautista (RRIT)
20 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