我有一个错误,当我想创建一个触发器来检查salle表中的新条目 我有一张表(nSalle,nbComputer,负责) 如果nSalle在(1,2,3,4,5),我想在插入前ckeck否则,我将限制插入
我创建了一个触发器,我没有错误但是当我插入一个值!=(1,2,3,4,5)我得到它插入女巫不是我想要的
到目前为止她是我的代码
delimiter //
create trigger before_insert_salle before insert
on salle
for each row
begin
(nSalle,nbComputer,responsible)
if new.nSalle in (1,2,3,4,5) then
set new.nSalle = new.nSalle,
new.nbComputer = new.nbComupter,
new.responsible = new.responsible ;
end if ;
end //
当我插入像这样的记录时
insert into salle values (10,20,'Joe')
是有效的,女巫是错的10不在(1,2,3,4,5)
答案 0 :(得分:1)
您希望在违反约束时发出错误信号。 MySQL现在允许您使用signal
执行此操作:
delimiter //
create trigger before_insert_salle before insert
on salle
for each row
begin
declare msg varchar(255);
if new.nSalle not in (1,2,3,4,5) then
SET msg = concat('Constraint on nSalle violated: invalid value ', cast(new.nSalle as varchar(255)));
SIGNAL sqlstate '45000' SET message_text = msg;
end if ;
end //
signal
上的文档是here。