相关疑难解决方法(0)

在MySQL触发器中抛出错误

如果我有一个trigger before the update表,我怎么能抛出一个阻止该表更新的错误?

mysql database triggers

167
推荐指数
6
解决办法
7万
查看次数

MySQL中的CHECK约束不起作用

首先,我创建了一个像

CREATE TABLE Customer (
  SD integer CHECK (SD > 0),
  Last_Name varchar (30),
  First_Name varchar(30)
);
Run Code Online (Sandbox Code Playgroud)

然后在该表中插入值

INSERT INTO Customer values ('-2','abc','zz');
Run Code Online (Sandbox Code Playgroud)

MySQL没有显示错误,它接受了值.

mysql check-constraints

126
推荐指数
5
解决办法
9万
查看次数

如何让MySQL在SQL中抛出条件运行时异常

我正在编写迁移测试以确保用户是由迁移创建的.如果用户不存在,则测试应该抛出错误.起初,我以为我可以使用零错误除法来得到我想要的东西:

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只影响INSERTUPDATE陈述.

然后我想也许我可以用错误数量的参数调用一些函数:

SELECT IF(COUNT(*) = 1, 1, date_format(1, 2, 3))
  FROM mysql.user WHERE user = 'foo';
Run Code Online (Sandbox Code Playgroud)

但即使这样,它也会死亡 foo存在,,大概是因为解析器注意到错误的参数计数.

我可以写一个模拟引发异常的函数,但我试图避免这种情况.有没有办法强迫MySQL有条件地抛出运行时异常?

mysql runtime-error exception

8
推荐指数
1
解决办法
6584
查看次数