获取 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
返回一个结果对象,可用于获取构成表主键的列名。
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
排序。
版本 | 描述 |
---|---|
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"];