Я пытаюсь написать ограничение для таблицы занятости, которое не допускает никакого значения выше значения из значения размера в таблице комнат для каждой комнаты с общим синтаксисом SQL. Я написал несколько кодов, но не смог заставить их работать. У меня ошибка: рядом с "ASSERTION": синтаксическая ошибка. Возможно ли такое ограничение?
Спасибо
Таблицы:
Patient
+------+-----------+-----------+
| PIN |first_name | last_name |
+------+-----------+-----------+
| P1234| test | tuyt |
| P2234| dasda| aktyl |
| P3234| adx | orlik |
| P4234| hfg | ewewan |
+------+-----------+-----------+
Room
+------------+------------+
|room_number | size |
+------------+------------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 9 |
+------------+------------+
Occupies
+----------+-------------+
|patient | room number |
+----------+-------------+
| P1234 | 1 |
| P2234 | 2 |
| P3234 | 3 |
| P4234 | 9 |
+----- ----+-------------+
SQL Код, который я пытался написать:
CREATE TABLE Room(room_number INT, size INT(8));
INSERT INTO Room values(1,1);
INSERT INTO Room values(2,2);
INSERT INTO Room values(3,2);
INSERT INTO Room values(4,9);
CREATE TABLE Patient(PIN CHAR(6), first_name VARCHAR(10), last_name VARCHAR(10),
PRIMARY KEY (PIN));
INSERT INTO Patient values('P1234', 'test','tuyt');
INSERT INTO Patient values('P2234', 'dasda','aktyl');
INSERT INTO Patient values('P3234', 'adx','orlik');
INSERT INTO Patient values('P4234', 'hfg','ewewan');
CREATE TABLE Occupies(patient char(6), room INT, PRIMARY KEY(patient,room),
FOREIGN KEY (patient)
REFERENCES Patient (PIN)
FOREIGN KEY (room)
REFERENCES Room (room_number));
INSERT INTO Occupies values('P1234', 1);
INSERT INTO Occupies values('P2234', 2);
CREATE ASSERTION Occupies CHECK
(
NOT EXISTS
(
SELECT *
FROM Occupies as o
WHERE
(
( SELECT count(o.patient)
FROM Occupies As o
GROUP BY o.room) >
( SELECT r.size
FROM Room as r
GROUP BY r.room_number
WHERE r.size)
)
)
);