0

こんにちは、新しく挿入されたデータ (アドレス、リスト番号、日付、価格) に同様のタプルがある場合に挿入/更新を許可しないトリガーに取り組んでいます。

条件 - 1 つのリストを同じ日に 2 回リストすることはできません テーブル 123、1992 年 6 月 19 日 123、1990 年 6 月 20 日 挿入: 123、1990 年 6 月 20 日 - テーブルで既に機能しない

私のコードの唯一の問題は、リストテーブルに最初からデータがない場合に動作しないことです

create or replace TRIGGER same_prop_listed BEFORE INSERT OR UPDATE  ON HasListing
FOR each ROW
DECLARE
    c_date VARCHAR2(20);
BEGIN
    SELECT LISTING_DATE
    INTO c_date
    FROM HasListing
    WHERE PROP_ADDRESS = :NEW.prop_address;
    IF (c_date = :NEW.listing_date) THEN
    RAISE_APPLICATION_ERROR(-20001,'Cannot list same property twice in  one day!');
    END IF;
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
        RAISE_APPLICATION_ERROR(-20003,'No DATA');

END;

これはオラクルにあります。だから私のエラーはオンです - IF (c_date = :NEW.listing_date) c_dateがnullだからです

4

1 に答える 1

1

複数列の一意の制約を設定してみませんか?

ALTER TABLE YOUR_TABLE ADD CONSTRAINT UNI_CONSTR UNIQUE (COL1, COL2, COL3);

?

于 2012-07-04T20:25:53.173 に答える