mysql - 触发以验证房间容量

标签 mysql

我正在尝试使用 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 ;

我目前在同一个表中有两列,分别是日期和房间,这是我想要的输出

enter image description here

但是情况并非如此,因为无论日期如何,触发器仍会限制“单次”三次。

最佳答案

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/

相关文章:

Mysql表关系加外键显示无法创建

jQuery FullCalendar clientEvents() 未定义结束时间

mysql - Dockerfile - 运行 init sql 文件来设置表

检查时间戳的 php 文件

php - 如何查找两个 Mysql 表之间的缺失值

php - 如何在 PHP 和 MySQL 中使用货币值?

mysql - 为数组中的所有 id 选择列上具有最大值的所有行

java - 在 Spring Boot 中初始保存后更新 Hibernate 存储库条目

mysql - 无法读取未定义的属性 'id'。表达

MYSQL 创建函数 - 获取 : Not allowed to return a result set from a function