【问题标题】:How to get last inserted id in SQL Server 2000 using ODBC?如何使用 ODBC 在 SQL Server 2000 中获取最后插入的 id?
【发布时间】: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 中实现这一点?

【问题讨论】:

    标签: sql-server odbc sql-server-2000 lastinsertid last-insert-id


    【解决方案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().."
    • 你能试试编辑后的答案,告诉我你的输出是什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 2015-07-15
    相关资源
    最近更新 更多