【问题标题】:PHP mysql conditional unique constraint? [closed]PHP mysql条件唯一约束? [关闭]
【发布时间】:2019-11-18 00:19:20
【问题描述】:

如何使一列只包含 x 数量的相似字符串条目?

例子:

------------
| room_type|
|----------|
| premium  |
| premium  |
| premium  |
| premium  |
| premium  |

如果有不同类型的条目,它也只会占用 x 的数量。

【问题讨论】:

  • 您可以在数据库上使用触发器来控制它,或者在插入之前对您的 php 进行检查
  • 你想使用enum吗?

标签: php mysql sql-update sql-insert database-trigger


【解决方案1】:

这不能通过约束来完成。您可以为此编写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) > 5 then
        signal sqlstate '45000';
    end if;
end;
$$
delimiter ;

更新触发器:

delimiter $$
create trigger my_update_trigger before update on my_table
for each row
begin
    if (select count(*) from my_table where room_type = new.room_type) > 5 then
        signal sqlstate '45000';
    end if;
end;
$$
delimiter ;

Demo on DB Fiddle:

触发器引发错误:

错误:ER_SIGNAL_EXCEPTION:未处理的用户定义异常条件

【讨论】:

    猜你喜欢
    • 2010-10-26
    • 2013-04-20
    • 2021-07-22
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 2014-10-20
    相关资源
    最近更新 更多