我正在尝试使用 before 触发器对特定日期的房间容量进行验证。
这是我当前使用的触发器:
delimiter $$
create trigger my_insert_trigger before insert on my_table
for each row
begin
if (select count(*) from my_table where room_type = new.room_type) > 3 then
signal sqlstate '45000';
end if;
end;
$$
delimiter ;
我目前在同一个表中有两列,分别是日期和房间,这是我想要的输出
但是情况并非如此,因为无论日期如何,触发器仍会限制“单次”三次。
最佳答案
do a room capacity validation for a specific date
只需将日期
添加到控件查询中即可:
delimiter $$
create trigger my_insert_trigger before insert on my_table
for each row
begin
if (
select count(*)
from my_table t
where t.room_type = new.room_type and t.date = new.date
) >= 3 then
signal sqlstate '45000';
end if;
end;
$$
delimiter ;
注意:因为它的条件 > 3
,您现有的代码将允许每个房间 4 条记录。我将其更改为 >= 3
,因此每个房间和日期只允许 3 条记录,这似乎就是您正在寻找的内容。
关于mysql - 触发以验证房间容量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58922476/