Я создаю базу данных с этими двумя таблицами в H2:
CREATE TABLE INSTANCE
(
INSTANCE_ID BIGINT AUTO_INCREMENT PRIMARY KEY,
DATE DATE,
TIME TIME,
LOCATION VARCHAR(255),
PRICE INT,
CAPACITY INT,
EVENT_ID INT
);
CREATE TABLE RESERVATION
(
RESERVATION_ID BIGINT AUTO_INCREMENT PRIMARY KEY,
RESERVATION_ORDER INT NOT NULL,
INSTANCE_ID INT NOT NULL,
USER_ID INT NOT NULL
);
Так, например, есть экземпляр с емкостью 20.
Шаг заказа резервирования увеличивается с каждым резервированием к этому instance.
Например, вот так:
INSERT INTO RESERVATION VALUES (1,1,1,1);
INSERT INTO RESERVATION VALUES (2,2,1,3);
INSERT INTO RESERVATION VALUES (3,3,1,4);
INSERT INTO RESERVATION VALUES (4,4,1,5);
INSERT INTO RESERVATION VALUES (5,1,3,2);
INSERT INTO RESERVATION VALUES (6,2,3,5);
INSERT INTO RESERVATION VALUES (7,1,6,6);
Моя проблема в том, что мне нужно создать проверочное ограничение, которое
INSTANCE.CAPACITY >= RESERVATION_ORDER
, поэтому я не могу добавить другое резервирование когда уже 20 из них сделаны для этого экземпляра, но я понятия не имею, как это сделать. Я использовал SQL всего несколько раз в своей жизни, и мне трудно ссылаться на другие таблицы с помощью внешнего ключа.
Я пытался добавить что-то подобное при создании таблицы без успеха
CHECK (RESERVATION_ORDER =< (SELECT CAPACITY FROM INSTANCE WHERE (INSTANCE_ID = INSTANCE_ID)))