0
cust_birthdateに制約を追加しようとしていますが、顧客が18歳以上であることを確認してください。顧客の年齢をチェックするSQLトリガーが機能しない
は、ここに私は、私は制約でSYSDATEを使用することはできませんがわかった
create table customer(
cust_id char(5) NOT NULL,
cust_name varchar(30),
cust_birthdate date,
primary key(cust_id)
);
table文を作成しているが、私は私の状況に合わせてトリガーをオンラインを発見しました。
insert into customer values('C0001', 'Chek Wei', TO_DATE('20-OCT-2016', 'dd-MON-yyyy'));
「チェク魏の顧客が18歳未満である:私はこのような何かを挿入すると
CREATE OR REPLACE TRIGGER trgCustomer
BEFORE INSERT ON customer
FOR EACH ROW
BEGIN
IF(ADD_MONTHS(:new.cust_birthdate, 18 * 12) < sysdate) THEN
RAISE_APPLICATION_ERROR(-20001, 'Customer must be at least 18 years old.');
END IF;
END;
/
しかし、トリガーが動作しません。ここで
は私が変更されたトリガであります古いですが、エラーメッセージは表示されません。私はまだトリガーを習得していませんが、私は制約でSYSDATEを使用することができないので、私は選択肢がありません。
私の引き金に何が問題なのですか?私は、Oracle Database Express Editionの11gリリース2
を使用しています
は、すべてのヘルプは高く評価されます。
そのようなデータベースにビジネスロジックを置きます悪い習慣であり、お勧めしません。 – SkryptX
その論理は逆転していませんか?あなたはその日に18年を追加するときだけ、エラーを発生させるsysdateよりも大... –