什么是mysql相当于Sql Server的@@ Identity和@@错误以及如何在mysql中使用try catch

时间:2010-04-05 11:12:34

标签: sql mysql sql-server database

我在mysql中寻找几个与sql server等效的全局变量。

我想要整个清单 例如。

Sql Server等效

@@error ---

@@Identity ---

现在基本上我想知道@@ error和@@ identity的等效变量是什么。

但如果你能提供其他变量

,那将会有所帮助

3 个答案:

答案 0 :(得分:5)

可以使用 LAST_INSERT_ID() 功能找到为当前连接生成的最后auto_increment(即最后一个标识)


关于错误,不确定;似乎没有任何 system variable 与最后一条错误消息相对应。

show errors声明:

mysql> select a from b;
ERROR 1046 (3D000): No database selected

mysql> show errors;
+-------+------+----------------------+
| Level | Code | Message              |
+-------+------+----------------------+
| Error | 1046 | No database selected | 
+-------+------+----------------------+
1 row in set (0,00 sec)

但不确定如何使用此结果......


在搜索了一下之后,我发现了这个帖子: Getting the last error message ,其中说(引用)

  

我认为应该有类似的东西   @@last_error_id和   @@last_error_message,但我不能   在当前的手册中找到任何内容。

第一个答案是(引用)

  

目前无法,来自   我们理解错误处理的意思   在版本5.2和   希望这样的事情可能会发生   可能的。

答案 1 :(得分:0)

如果您对错误的数量(或出现错误)感兴趣,可以使用@@error_count

> select a from bogus_table;
(1054, "Unknown column 'a' in 'field list'")
> select @@error_count;
+---------------+
| @@error_count |
+---------------+
| 1             |
+---------------+

答案 2 :(得分:0)

关于错误,您可以使用一种工具获取错误编号和其他信息。有一个名为 GET DIAGNOSTICS 的实用程序,您可以使用它查询数据库诊断数据。参考下面的例子 -

GET DIAGNOSTICS @NUM = NUMBER, @rowsAffected = ROW_COUNT; 
-- here @NUM and @rowsAffected are user variables. Any other variables can work here as well.

在上面的语句中,您可以获得错误条件的数量和受影响的行数。对于错误情况,我们参考了此实用程序的另一个变体,它消耗了我们从上述语句中获得的错误计数。

GET DIAGNOSTICS CONDITION @NUM
@errNo = mysql_errno, -- Error Number
@msg = message_text, -- Error Message Text
@sqlState = sqlstate_returned -- Affected SQL State under which error occured
;

尽管如此,请注意 - 一旦您预计您的 sql 会失败,请立即使用这些语句。由于这些捕获内部数据库诊断,因此任何其他功能都可以快速覆盖您的会话数据。

有关这方面的更多信息,请参阅链接 here