mysql RAISERROR
时间: 2023-11-09 22:03:15 浏览: 100
MySQL 中没有 RAISERROR 这个命令,但可以使用 SIGNAL 命令来抛出异常。SIGNAL 命令可以指定异常的 SQLSTATE 值和异常消息。
例如,以下语句将抛出一个 SQLSTATE 值为 '45000' 的异常,异常消息为 'My error message':
```
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'My error message';
```
相关问题
create trigger ypxz on CF for insert as declare @n int select @n=Sl from inserted if @n>=20 begin raiserror('处方药品超过最大限度',16,1); rollback transaction end 改成mysql命令行语法
DELIMITER $$
CREATE TRIGGER ypxz
AFTER INSERT ON CF
FOR EACH ROW
BEGIN
DECLARE n INT;
SELECT Sl INTO n FROM inserted;
IF n >= 20 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '处方药品超过最大限度';
ROLLBACK;
END IF;
END$$
DELIMITER ;
create trigger jcxz on JC for insert as declare @rs varchar(8) select @rs=Jc_no from inserted if @rs>=100 begin raiserror('检查人数超过最大限度',16,1); rollback transaction end go改成mysql命令行语法
在 MySQL 中,创建触发器的语法如下:
```
CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON table_name
FOR EACH ROW
trigger_body
```
因此,将上述 SQL Server 的触发器转换成 MySQL 的语法,可以得到以下代码:
```
DELIMITER //
CREATE TRIGGER jcxz
BEFORE INSERT ON JC
FOR EACH ROW
BEGIN
DECLARE rs VARCHAR(8);
SELECT Jc_no INTO rs FROM JC WHERE Jc_no = NEW.Jc_no;
IF rs >= 100 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '检查人数超过最大限度';
ROLLBACK;
END IF;
END //
DELIMITER ;
```
需要注意的是,MySQL 中触发器的语法和部分关键字与 SQL Server 不同,需要进行相应的调整。另外,在 MySQL 中抛出异常需要使用 SIGNAL 语句,而不是 RAISERROR。
阅读全文