我在mysql中寻找几个与sql server等效的全局变量。
我想要整个清单 例如。
Sql Server等效
@@error
---
@@Identity
---
等
现在基本上我想知道@@ error和@@ identity的等效变量是什么。
但如果你能提供其他变量
,那将会有所帮助答案 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