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

ugyldig udløserfejl

Ok, jeg sender dette som et svar, fordi kommentarer ikke tillader så meget tekst.

Når du ser dine borde, er nogle ting stadig ikke klare. din funktion ADD_PACIENTE_QUARTO implementerer en SELECT sætning som angiver prædikatet Where PAC = CONT men PAC er ikke i PACIENTE s specifikation, men er snarere den lokale variabel, hvor du gemmer dit resultat og CONT er din parameter, er det ikke klart, hvad du prøvede der.

Nu har din trigger nogle fejl i logik og implementering.

Først og fremmest er din triggers navn PACIENTE_TRIGGER men linjen INSERT OR UPDATE ON TIPO_QUARTO fortæller mig, at den er på TIPO_QUARTO tabel, er dette ikke et problem syntaktisk, men logisk set kan det være en smerte i numsen for en person, der forsøger at finde ud af, hvilket bord triggeren tilhører.

Brug derefter INSERT OR UPDATE OF TIPO ON TIPO_QUARTO kun for at overvåge Indsæt eller opdatere ændringer i kolonne TIPO af TIPO_QUARTO tabel.

Nu denne linje If :new.TIPO_QUARTO = 'UTI' then , forudsat at denne trigger er knyttet til TIPO_QUARTO tabel, har den tabel ikke en kolonne med navnet TIPO_QUARTO ændre dette til :new.TIPO .

Dernæst PAC er af typen VARCHAR så det er uklart for mig, hvad du prøver at gøre i PAC := PAC - :new.TIPO; og i PAC := PAC + :new.TIPO; begge linjer vil kaste invalid number undtagelse, da du ikke kan tilføje eller trække strenge fra, måske var din hensigt at sammenkæde eller få en understreng.

Og til sidst opfordringen til UPDATE TIPO_QUARTO SET TIPO = PAC inde i en trigger for TIPO_QUARTO vil resultere i mutating table undtagelse, du kan ikke forespørge/opdatere en tabel, der er midt i en DML-sætning (INSERT eller UPDATE i dette tilfælde) for at rette dette, du kan bare tildele :new.TIPO := PAC .

Pas på disse detaljer, og måske vil dit problem ikke være længere.




  1. Sådan får du silverlight til at hente sine data fra MySQL

  2. SQLite FINDER

  3. Sådan udtrækkes streng mellem to specialtegn i mysql

  4. Visning af Modal Window-meddelelser i Oracle Forms ved hjælp af Show_Alert