2012-01-15 3 views
0

내 dtb에 대한 프로그래밍 트리거에 약간의 문제가 있습니다. 하나의 테이블에서 2 개의 값을 제어해야합니다. 나는 Concert라는 테이블을 가지고 있고 그것은 2 개의 외부 키를 가지고있다 : 1은 테이블 플레이스의 id이다. 내가 생각하기에 두 번째는 중요하지 않다.하나의 테이블에 두 개의 동일한 값을 삽입하지 못하도록하는 트리거

콘서트 : id_concert, id_place<fk>, id_organizer<fk>, date, name, sponsor

장소 : id_place, name, capacity, adress, town

내가 제거 할 것은 같은 날에 조직 ​​된이 개 공연 한 장소에있을 수 없다는 것이다. 그래서, 어떻게 든이 값을 가진 콘서트가 존재한다면 콘서트에 같은 날짜와 같은 위치를 삽입 할 수 없다는 것을 제어해야합니다.

의견을 보내 주셔서 감사 드리며 불쾌한 영어는 유감입니다.

+0

MySQL, Oracle, SQL Server 등 어떤 종류의 데이터베이스입니까? – JStead

+0

오라클 데이터베이스 :) –

답변

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

아, 그래, 이미 해냈어. 꽤 쉽지. 어쨌든 시간 내 주셔서 감사합니다 :) –

관련 문제