Триггер для предотвращения вставки 2 одинаковых значений в одну таблицу - PullRequest
0 голосов
/ 15 января 2012

У меня небольшая проблема с программированием триггера для моей базы данных. Мне нужно контролировать 2 значения в одной 1 таблице. У меня есть таблица с названием Concert, и она имеет 2 внешних ключа: 1 - это идентификатор таблицы Place. Второе не важно для этого, я думаю.

Концерт : id_concert, id_place<fk>, id_organizer<fk>, date, name, sponsor

Место : id_place, name, capacity, adress, town

Что я хочу исключить, так это то, что 2 концерта, организованные в один и тот же день, не могут быть в одном месте. Поэтому мне нужно каким-то образом контролировать, что пользователь не может вставить ту же дату и то же место для концерта, если уже существует концерт с этими значениями.

Большое спасибо за ваши предложения и извините за плохой английский.

1 Ответ

3 голосов
/ 15 января 2012

Вам необходимо добавить уникальное ограничение на вашу таблицу концертов, которая состоит из пары (id_place, date).Это заставит ядро ​​базы данных не разрешать более одного Концерта в одном и том же месте одновременно.

Для Oracle информацию можно найти здесь: http://www.techonthenet.com/oracle/unique.php

CREATE TABLE Concert
(   
 ... (filled in with your existing table definition)
 CONSTRAINT concert_place_unique UNIQUE (id_place, date)
);

иличтобы изменить существующую таблицу:

ALTER TABLE Concert
add CONSTRAINT concert_place_unique UNIQUE (id_place, date);

Ограничения являются правильным способом обработки этого условия, а не триггерами.Ограничения являются неотъемлемой частью базы данных и не имеют условий гонки и препятствуют добавлению данных в первую очередь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...