获取 MSSQL 表主键的示例
$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 — 获取表的 主键
返回一个结果标识符,可用于获取构成表主键的列名。
odbc
ODBC 连接标识符,有关详细信息,请参阅 odbc_connect()。
catalog
目录(在 ODBC 2 中称为“限定符”)。
schema
模式(在 ODBC 2 中称为“所有者”)。
table
返回一个 ODBC 结果标识符,如果失败则返回 false
。
结果集包含以下列
TABLE_CAT
TABLE_SCHEM
TABLE_NAME
COLUMN_NAME
KEY_SEQ
PK_NAME
结果集按 TABLE_CAT
、TABLE_SCHEM
、TABLE_NAME
和 KEY_SEQ
顺序排序。
范例 #1 列出列的主键
<?php
$conn = odbc_connect($dsn, $user, $pass);
$primarykeys = odbc_primarykeys($conn, 'TutorialDB', 'dbo', 'TEST');
while (($row = odbc_fetch_array($primarykeys))) {
print_r($row);
break; // 省略了后面的行以简洁
}
?>
上面的示例将输出类似于以下内容
Array ( [TABLE_CAT] => TutorialDB [TABLE_SCHEM] => dbo [TABLE_NAME] => TEST [COLUMN_NAME] => id [KEY_SEQ] => 1 [PK_NAME] => PK__TEST__3213E83FE141F843 )
获取 MSSQL 表主键的示例
$cn = odbc_connect( "DSN", "sa", "pwd");
$rs = odbc_primarykeys( $cn, "database", "dbo", "table_name");
odbc_result_all($rs);
回复 devendra_joshi
在适用于 Linux、UNIX 和 Windows 的 DB2 通用数据库中,目录视图通过 SYSCAT 模式访问,而不是 SYSIBM 模式 - 因此您应该发出“SELECT * FROM SYSCAT.KEYCOLUSE” 来列出所有参与给定键约束的列。
有关 DB2 目录视图的完整列表,请访问 http://publib.boulder.ibm.com/infocenter/db2help/,搜索“目录视图”并选择最上面的结果。
我想要一个 db2 中表的主键列表
通过使用
'select * from SYSIBM.SYSKEYCOLUSE ' 查询,我在 CLP 上得到了结果
但是当我以 PHP 形式编写以下代码时,它返回 0 行。
$mstmt="select * from SYSIBM.SYSKEYCOLUSE";
$b=odbc_exec($conn,$mstmt);
echo odbc_result_all($b);
而如果我们编写这段代码
$mstmt="select * from SYSIBM.SYSFUNCTIONS";
$b=odbc_exec($conn,$mstmt);
echo odbc_result_all($b);
它返回正确的数据。
我试图通过 ODBC 接口从 SQLServer 数据库中查找主键。有趣的是,odbc_primarykeys 函数不适用于 SQLServer(至少我的实现不是这样)。幸运的是,sp_keys 查询通过并返回了答案。此代码有效(前提是您知道要处理哪个数据库,这完全是另一回事)。
// 如果是 SQLServer,我们需要执行特殊操作来获取
// 主键。
//
// 看起来 ODBC 接口的实现者只是把这个
// 遗漏了,因为数据库有一个查询可以返回信息,并且
// 信息甚至以相同的列名返回。
if ($DBType == "SQLServer")
$KeySel = odbc_exec($DBConn, "sp_pkeys ".$TableName);
// 否则,通过 ODBC 向数据库询问主键
// 名称。
else $KeySel = odbc_primarykeys($DBConn, $DatabaseName,
$DatabaseUser, $TableName);
while ($KeySel && ($KeyRec = odbc_fetch_array($KeySel)))
$KeyCol[$KeyRec["KEY_SEQ"]] = $KeyRec["COLUMN_NAME"];