2012-01-15 28 views
0

私のdtbのプログラミングトリガーにはほとんど問題がありません。 1つのテーブルで2つの値を制御する必要があります。私はコンサートと呼ばれるテーブルを持っていて、2つの外部キーを持っています:1はテーブルプレイスのIDです。二番目に重要ではないと私は思う。1つのテーブルに2つの同じ値を挿入しないようにするためのトリガー

コンサート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

私は、日付が今日または将来であることが必要であることを知っています。だから、私は日付と2つの値のユニークな制約のトリガーを行う必要がありますか? :) –

+0

私にいくつかの例を教えてもらえますか? –

+0

ああ、私はすでにそれをやった、それはかなり簡単です。とにかくあなたの時間のためにあなたに感謝:) –

関連する問題