获取 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,$catalog,$schema,$table返回一个结果对象,可用于获取构成表主键的列名。
odbcODBC 连接对象,详情请参见 odbc_connect()。
catalog目录(在 ODBC 2 中称为“限定符”)。
schema模式(在 ODBC 2 中称为“所有者”)。
table
返回一个 ODBC 结果对象,或在失败时返回 false。
结果集包含以下列
TABLE_CATTABLE_SCHEMTABLE_NAMECOLUMN_NAMEKEY_SEQPK_NAME结果集按 TABLE_CAT、TABLE_SCHEM、TABLE_NAME 和 KEY_SEQ 排序。
| 版本 | 描述 |
|---|---|
| 8.4.0 |
odbc 现在需要一个 Odbc\Connection 实例;以前需要一个 resource。 |
| 8.4.0 | 此函数现在返回一个 Odbc\Result 实例;以前返回一个 resource。 |
示例 #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
在 DB2 Universal Database for Linux, UNIX, and Windows 中,目录视图是通过 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"];