我在数据库中有以下三个(InnoDB-)表MySQL
:
Entity (DLID)
Category (CatID, CatName)
hasCategory (DLID, CatID)
现在,在插入表格时,hasCategory
我想确保每个Entity
都与至少一个相关联Category
。因此,我编写了以下触发器:
delimiter |
create trigger Max before insert on hasCategory for each row begin
if (exists (select distinct DLID from Entity where not exists (select distinct new.DLID from new))) then
signal sqlstate '45000'
set message_text = 'Min of 1 category per entity required';
end if;
end|
delimiter ;
现在,当我执行以下查询时:insert into hasCategory values (1, 1);
我得到了错误error code 1146: table mydb.new does not exist
。我创建了一些与此类似的其他触发器,也指的是新表,它工作得非常好。然而,我不明白是什么导致了这个特定触发器中的错误。
该select
声明是否可能引起一些麻烦?我读过只有select into
语句在程序中有效,但我不知道这是否与此有关。
谢谢你的帮助!