【发布时间】:2017-03-16 01:28:38
【问题描述】:
我有两张桌子:beds 和 room,我想确保在插入时每个房间最多可以有 5 张床(即公司总共拥有 50 张床,可以从一个房间换到另一个房间各种组合,但每个房间最多只能有5个)。
beds 中的主键是room_id 和bed_id 的组合键(room_id 是外键),但我不确定如何将其作为表的约束来实现?
以下表格
CREATE TABLE "ROOM"
("ROOM_NO" NUMBER(*,0),
"ROOM_NAME" VARCHAR2(45 CHAR) NOT NULL ENABLE,
CONSTRAINT "ROOM_NO_PK" PRIMARY KEY ("ROOM_NO")
CREATE TABLE "BED"
("ROOM_NO" NUMBER(*,0),
"BED_NO" NUMBER(*,0),
CONSTRAINT "BED_PK" PRIMARY KEY ("ROOM_NO", "BED_NO")
我是 sql 新手,还没有涉及到触发器和序列,请您简单地解释一下如何做到这一点?
【问题讨论】:
-
我认为你需要一个触发器来管理这个。
-
或让它从应用程序控制超过全局阈值
-
我同意@GordonLinoff 这可以通过触发器解决。如果您需要有关触发器解决方案的帮助,您应该提供一些示例表结构、数据并更清楚地描述预期行为。
-
@Plirkee 一家酒店的商店有 50 张床位,编号从 1 到 50,但我想确保一个房间可以拥有商店中任意数量的床位。编号从 1 到最大 5。所以房间 1 可以有床 1、床、2,然后房间 2 会有床 1 床 2 床 3 床 4 所以房间 1 中的床 1 和房间 2 中的床 1 应该不同床(我希望这是有道理的。