我已经创建了一个MySQL函数,并且如果为参数传递的值无效,则会引发错误.在MySQL函数中引发错误的选项有哪些?
我正在编写迁移测试以确保用户是由迁移创建的.如果用户不存在,则测试应该抛出错误.起初,我以为我可以使用零错误除法来得到我想要的东西:
SET SESSION sql_mode = 'error_for_division_by_zero';
SELECT 1/COUNT(*) FROM mysql.user WHERE user = 'foo';
Run Code Online (Sandbox Code Playgroud)
但是,如果foo不存在,则不会抛出错误.原来error_for_division_by_zero只影响INSERT和UPDATE陈述.
然后我想也许我可以用错误数量的参数调用一些函数:
SELECT IF(COUNT(*) = 1, 1, date_format(1, 2, 3))
FROM mysql.user WHERE user = 'foo';
Run Code Online (Sandbox Code Playgroud)
但即使这样,它也会死亡 foo存在,,大概是因为解析器注意到错误的参数计数.
我可以写一个模拟引发异常的函数,但我试图避免这种情况.有没有办法强迫MySQL有条件地抛出运行时异常?