Oracle 12c.Ограничение ввода данных на основе количества экземпляров в таблице
В настоящее время у меня есть таблица для проведения посещений пациентов, содержащих идентификатор врача, идентификатор пациента и данные/время посещения.
Я хотел бы создать ограничение, которое при вводе данных проверяет, имеет ли конкретный врач 5 назначений в этот заданный день. Если у врача есть 5 назначений, дополнительное назначение не может быть добавлено.
Есть ли способ сделать это, кроме использования хранимой процедуры для входа?
Если я должен был использовать хранимая процедура (в отличие от проблем, связанных с триггером, объявляющих переменную), я получаю следующую ошибку: Ошибка (4,8): PLS-00103: Обнаружен символ «ОБНОВЛЕНИЕ» при ожидании одного из следующего:: =. (@%;.? Не нулевой диапазон символов по умолчанию
Я уверен, если это потому, что я не могу использовать перед обновлением на процедуры Есть мысли
CREATE OR REPLACE PROCEDURE doc_apt_limit_5
IS
v_visit_count
BEFORE UPDATE OR INSERT ON aa_patient_visit
FOR EACH ROW
BEGIN
SELECT (COUNT(*)) INTO v_visit_count
FROM aa_patient_visit
WHERE physid = :NEW.physid
GROUP BY physid, visittime;
IF v_visit_count > 4 THEN
RAISE_APPLICATION_ERROR(-20001, 'physician is fully booked on this date');
END IF;
END;
Триггер кажется естественные решения, но это в основном та же идея. –
Я думаю, что это, наверное, лучший маршрут. Я пробовал делать это с помощью процедуры, так как у меня возникли проблемы с объявлением переменной с помощью моего триггера, однако получаю сообщение об ошибке. добавил это к моему оригинальному сообщению. Спасибо gain – Ian
До (или после) только для триггеров, а не для процедур. Объявление переменной в триггере не является проблемой. Попытка принудительного применения такого ограничения связана, однако, из-за параллелизма (две вставки/обновления в то же время не могут видеть друг друга), если вы каким-то образом не сериализуете и не изменяете проблемы с таблицей. В любом случае это похоже на странное ограничение - количество назначений довольно заполнено назначенными слотами. –