2012-02-29 11 views
0

こんにちは私はオラクル10gのトリガーを作成する必要があります。トリガーを作成してbirthDateを入力することはできません。私は本当にこれで苦労していますあなたは親切な人に感謝します。トリガーを作成するための支援

私のスキームは次のとおりです。

CONSTRAINT_NAME    C             
------------------------------ -             
QUOTE_FK      R             
ROLE_FK      R             
MOVIE_ROLE_FK     R             
ACTOR_ROLE_FK     R             
ACTORID      P             
MOVIEID      P             
QUOTEID      P             
ROLEID       P             
ROLEQUOTEID     P  

Relationships: 

ALTER TABLE Role ADD CONSTRAINT ACTOR_ROLE_FK FOREIGN KEY (actorID) REFERENCES Actor (actorID); 
ALTER TABLE Role ADD CONSTRAINT MOVIE_ROLE_FK FOREIGN KEY (movieID) REFERENCES Movie (movieID); 
ALTER TABLE RoleQuote ADD CONSTRAINT Role_FK FOREIGN KEY (roleID) REFERENCES Role (roleID); 
ALTER TABLE RoleQuote ADD CONSTRAINT Quote_FK FOREIGN KEY (quoteID) REFERENCES Quote (quoteID); 
+0

(これは遅くなると多くの作業が必要になります)トリガーで施行される制約が必要な場合は? [P.S ...](http://www.techonthenet.com/oracle/triggers/index.php) – Ben

+0

投稿する: CREATE TRIGGER death_date_not_valid BEFORE birthDate user1137472

+0

それが正しいかどうかわかりませんが、それは私が試したものです – user1137472

答えて

5

その種:あなたが必要と

私の関係の制約を依頼してくださいすることを任意のより多くの情報がある場合

Actor (actorID, lastName, firstName, middleName, suffix, gender, birthDate, deathDate) 
Movie (movieID, title, year, company, totalNoms, awardsWon, DVDPrice, discountPrice) 
Quote (quoteID, quote) 
Role (roleID ,roleName ,gender ,actorID* ,movieID*) 
RoleQuote (roleID*, quoteID*) 

であるあなたに

ありがとうございましたの制約をCHECK conとして実装する必要がありますstraint

ALTER TABLE actor 
    ADD CONSTRAINT chk_birth_before_death CHECK(birthDate < deathDate); 

あなたは本当にあなたがこれまでに試してみました何

CREATE OR REPLACE TRIGGER check_death_date 
    AFTER INSERT OR UPDATE ON actor 
    FOR EACH ROW 
BEGIN 
    IF(:new.birthDate > :new.deathDate) 
    THEN 
    RAISE_APPLICATION_ERROR(-20001, 'Birth date cannot be later than death date.'); 
    END IF; 
END; 
+0

本当にありがとう、私はこれを試してみようと神に祝福を知らせてください – user1137472

+0

私はalter tableを追加する必要がありますか?または、私はちょうどトリガーの感謝を実行することができます – user1137472

+0

@ user1137472 - あなたは、制約を作成するか、トリガーを作成することができます。両方を行うことは意味がありません。私の強い好みはトリガーを使用するのではなく、制約を使用してこのルールを強制することです。 –

関連する問題