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);(PHP 4, PHP 5, PHP 7, PHP 8)
odbc_primarykeys — Bir tablonun birincil anahtarlarını döndürür
Bir tablonun birincil anahtarlarını içeren sütunlardan oluşan sonuç için bir sonuç tanıtıcısı döndürür.
odbcODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.
katalogKatalog (ODBC 2 argosunda 'qualifier' ).
şemaŞema (ODBC 2 argosunda 'owner').
tablo
Hata durumunda false yoksa istenen bilgiyi içeren bir ODBC sonuç
tanıtıcısı döner.
Sonuç kümesi şu sütunlardan oluşur:
TABLE_CATTABLE_SCHEMTABLE_NAMECOLUMN_NAMEKEY_SEQPK_NAME
Sonuç kümesi TABLE_CAT, TABLE_SCHEM,
TABLE_NAME ve KEY_SEQ alanlarına göre
sıralanır.
Örnek 1 - Sütundaki birincil anahtarların listesi
<?php
$conn = odbc_connect($dsn, $user, $pass);
$primarykeys = odbc_primarykeys($conn, 'TutorialDB', 'dbo', 'TEST');
while (($row = odbc_fetch_array($primarykeys))) {
print_r($row);
break;
}
?>Yukarıdaki örnek şuna benzer bir çıktı üretir:
Array
(
[TABLE_CAT] => TutorialDB
[TABLE_SCHEM] => dbo
[TABLE_NAME] => TEST
[COLUMN_NAME] => id
[KEY_SEQ] => 1
[PK_NAME] => PK__TEST__3213E83FE141F843
)
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);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.I want a list of primary keys of a table in db2by using 'select * from SYSIBM.SYSKEYCOLUSE ' query i am getting the result on CLPbut 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.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"];