检查函数别名是否存在

Check if function alias exists

我的目标是在 h2 中注册一个用户定义的函数。第二次执行程序时出现错误,提示我的函数别名已经存在。

stmt.execute("CREATE ALIAS LEVENSHTEIN FOR
 \"modules.musicProvider.LocalNetworkMusicProvider.computeLevenshteinDistance\"");

看了 INFORMATION_SCHEMA 之后,我找不到事先检查函数是否已经定义的方法。

  1. 如何确定用户定义的函数是否已定义?
  2. 如何删除用户定义的函数?

我知道这是一个有点老的问题,但由于我今天一直在用户定义函数的这个确切领域使用 H2,所以我想我会回答这个问题。

一个选项是在创建 ALIAS 之前始终删除它:

DROP ALIAS IF EXISTS LEVENSHTEIN;

我从 this Whosebug question 那里得到了这些信息。

另一个选项是如果别名已经存在则不创建别名:

CREATE ALIAS IF NOT EXISTS LEVENSHTEIN ...

我从 this Whosebug question and the H2 documentation 那里得到了这个金块。

最后,您还可以执行此查询以查看 ALIAS 是否存在:

SELECT EXISTS(SELECT * FROM INFORMATION_SCHEMA.FUNCTION_ALIASES WHERE ALIAS_NAME = 'LEVENSHTEIN')

我从 this Whosebug question 获得了此查询的基础知识。