sql >> Database teknologi >  >> RDS >> Oracle

Oracle Trigger på indlejret bord

Du kan ikke definere en trigger som "BEFORE UPDATE ON Museum.EmployeeList.birthdate"Men du kan skrive en normal trigger FØR UPDATE ON Museum og i trigger body kan du gå over alle medarbejdere, der tjekker datoen.

Prøv denne:

CREATE OR REPLACE TRIGGER BUIR_Museum 
    BEFORE INSERT OR UPDATE ON Museum
    FOR EACH ROW

BEGIN
    IF :NEW.EmployeeList IS NOT NULL THEN
        FOR i IN :NEW.EmployeeList.FIRST..:NEW.EmployeeList.LAST LOOP
            IF :NEW.EmployeeList(i).birthdate > SYSDATE THEN
                RAISE_APPLICATION_ERROR(-20029, 'Invalid birthday');
            END IF;
        END LOOP;
    END IF;
END;



  1. Forsøger at udføre LOAD DATA INFILE med REPLACE og AUTO_INCREMENT

  2. lokal postgres db bliver ved med at give fejl duplikatnøgleværdi overtræder unik begrænsning

  3. SQL Server 2008:TOP 10 og adskilt sammen

  4. Anskaffelse af en unik database-id til SQL Server 2005 og nyere