假设我正在尝试为影院预订创建示例数据库架构。 我有一个带有 int capacity 的表“礼堂”,我希望能够创建尽可能多的“预订”记录,但我希望无法创建预订时礼堂正在填补。
例如,让我们说Auditiorium A有100个席位。然后我希望能够向礼堂A插入100个有FK的预订,当我尝试创建第101个预订时,我会有错误或类似的事情。
答案 0 :(得分:0)
这通常由MySQL或SQL Server中的触发器处理。
一种方法是使Auditoria
表具有最大容量(如果配置可能发生更改,则每个事件可能最大)。
Bookings
表会有一个触发器。插入记录时,会将事件的记录数与礼堂的容量进行比较,超出容量的插入将失败。
如果Auditoria具有固定的容量和布局,您还可以拥有一个每个座位一排的桌子。然后预订将用于特定的座位 - 并且容量问题会自动处理(因为没有座位可用)。