Ich erstelle einige Trigger für eine SQL-Datenbank. Ich habe erfolgreich zwei Trigger erstellt, die ein INSERT mit SYSDATE vergleichen. Für diese dritte versuche ich sicherzustellen, dass ein eingefügter Wert nicht größer als 10 ist. Unten ist der Trigger und die Testdaten, um es auszuführen. Ich glaube, das Problem hat etwas damit zu tun, die Bewertung zu bewerten.Erstellen eines SQL-Triggers mit einer Zahlenvariablen
CREATE OR REPLACE TRIGGER trig_rating_ck
BEFORE INSERT OR UPDATE OF rating ON reviews
FOR EACH ROW
BEGIN
IF (NEW.rating > 10) THEN
RAISE_APPLICATION_ERROR(-20000, 'Rating has to be between 1 and 10');
END IF;
END trig_rating_ck;
/
--TEST DATA
INSERT INTO reviews (review_id, reviewer_id, venue_id, description, rating, date_posted)
VALUES (seq_reviews.NEXTVAL, 10000,10000, 'THIS WAS GREAT', '11', '06-APR-2016');
Was ist der Fehler, den Sie erhalten? – bassrek
Ich würde vermuten, dass Sie einen Fehler bekommen, wenn Sie den Trigger erstellen, weil Sie einen Doppelpunkt vor 'new' in' if (: new.rating> 10) 'setzen müssen. Möglicherweise erhalten Sie einen Fehler beim Ausführen der Anweisung 'insert', da Sie versuchen, eine Zeichenfolge in eine Datumsspalte einzufügen, anstatt ein Datumsliteral oder ein explizites 'to_date' zu verwenden. –