如何防止添加新行,以防止sql中的重载

时间:2018-01-18 22:00:13

标签: mysql sql sql-server

假设我正在尝试为影院预订创建示例数据库架构。 我有一个带有 int capacity 的表“礼堂”,我希望能够创建尽可能多的“预订”记录,但我希望无法创建预订时礼堂正在填补。

例如,让我们说Auditiorium A有100个席位。然后我希望能够向礼堂A插入100个有FK的预订,当我尝试创建第101个预订时,我会有错误或类似的事情。

1 个答案:

答案 0 :(得分:0)

这通常由MySQL或SQL Server中的触发器处理。

一种方法是使Auditoria表具有最大容量(如果配置可能发生更改,则每个事件可能最大)。

Bookings表会有一个触发器。插入记录时,会将事件的记录数与礼堂的容量进行比较,超出容量的插入将失败。

如果Auditoria具有固定的容量和布局,您还可以拥有一个每个座位一排的桌子。然后预订将用于特定的座位 - 并且容量问题会自动处理(因为没有座位可用)。