2012-01-15 2 views
0

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

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

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

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

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

+0

Что такое база данных, то есть MySQL, Oracle, SQL Server .... – JStead

+0

База данных Oracle :) –

ответ

3

Вам необходимо добавить уникальное ограничение в вашу таблицу Концерта, состоящую из пары (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); 

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

+0

Я просто понял, что мне также нужно, чтобы дата была сегодняшней или будущей. Итак, я должен сделать триггер для даты и уникального ограничения для двух значений? :) –

+0

Можете ли вы дать мне пример? –

+0

О да, я уже сделал это, это довольно легко. Спасибо за ваше время в любом случае :) –

Смежные вопросы