我的目标是在h2中注册用户定义的函数。第二次执行程序时出现错误,说明我的函数别名已存在。
stmt.execute("CREATE ALIAS LEVENSHTEIN FOR
\"modules.musicProvider.LocalNetworkMusicProvider.computeLevenshteinDistance\"");
在看了INFORMATION_SCHEMA之后,我找不到事先检查函数是否已经定义的方法。
答案 0 :(得分:1)
我知道这是一个老问题,但由于我今天在用户定义函数的这个确切区域中使用H2,我想我会回答这个问题。
一种选择是在创建之前始终删除ALIAS
:
DROP ALIAS IF EXISTS LEVENSHTEIN;
我从this StackOverflow question获得了这些信息。
另一个选择是如果别名已存在则不创建别名:
CREATE ALIAS IF NOT EXISTS LEVENSHTEIN ...
我从this StackOverflow question和the H2 documentation获得了这个金块。
最后,您还可以执行此查询以查看ALIAS
是否存在:
SELECT EXISTS(SELECT * FROM INFORMATION_SCHEMA.FUNCTION_ALIASES WHERE ALIAS_NAME = 'LEVENSHTEIN')
我从this StackOverflow question获得了此查询的基础知识。