如何使用 ODBC 在 SQL Server 2000 中获取最后插入的 id?

Posted

技术标签:

【中文标题】如何使用 ODBC 在 SQL Server 2000 中获取最后插入的 id?【英文标题】:How to get last inserted id in SQL Server 2000 using ODBC? 【发布时间】:2015-03-07 20:10:21 【问题描述】:

我正在使用此代码将新记录插入数据库:

function newProtocol($date, $type, $text, $who, $reff) 
    $sql = "INSERT INTO c_rozhovor (ref_kunde, protokol_typ, besuch_protokol, datum_vzniku, kto_vytvoril) VALUES ('"
            .msescape($reff)."','"
            .msescape($type)."','"
            .msescape($text)."','"
            .msescape($date)."','"
            .msescape($who)."')";

    $connection = odbc_connect(constant('DATABASE_NAME'),'','');
    if (!connection) return false;      

    $query = odbc_exec($connection, $sql);
    if (!query) return false;

    return "New protocol was successfuly saved!";   

我想以某种方式返回 最后插入的 id 而不是 New protocol was successfully saved! 字符串。 mysql 中的 LAST_INSERT_ID() 之类的东西。有没有办法在 SQL Server 2000 中实现这一点?

【问题讨论】:

【参考方案1】:

您可以尝试对您的代码进行以下修改吗:

function newProtocol($date, $type, $text, $who, $reff) 
    $sql = "INSERT INTO c_rozhovor (ref_kunde, protokol_typ, besuch_protokol, datum_vzniku, kto_vytvoril) VALUES ('"
            .msescape($reff)."','"
            .msescape($type)."','"
            .msescape($text)."','"
            .msescape($date)."','"
            .msescape($who)."') SELECT SCOPE_IDENTITY()";

    $connection = odbc_connect(constant('DATABASE_NAME'),'','');
    if (!connection) return false;      

    $query = odbc_exec($connection, $sql);
    if (!query) return false;

    return $query;

【讨论】:

谢谢。这将返回错误“未定义函数 IDENT_CURENT...” 是的,您可以对其进行查询并捕获返回值。查看编辑后的答案。 同上:未定义函数Ident_current().." 你能试试编辑后的答案,告诉我你的输出是什么。

以上是关于如何使用 ODBC 在 SQL Server 2000 中获取最后插入的 id?的主要内容,如果未能解决你的问题,请参考以下文章

使用 ODBC 连接时如何在 MS Access 或 SQL Server 中使用日期数据类型

ODBC 查询在 MS Access 中有效,但在 SQL Server 中超时

检索 ODBC 表并插入 SQL Server CE 数据库

记录 ODBC、SQL Server

SQL Server ODBC 连接失败

如何使用ODBC数据连接连接到本地SQL Server? (我得到“登录失败”)