# Trigger



## DaSt (15. Mai 2016)

Hallo, 

in einer Übungsaufgabe zu Triggern (Oracle) lautet eine Aufgabe: 
"Beim Einfügen und Ändern von Artikeln soll automatisch aus dem Nettopreis die Mwst(19%) und der Bruttopreis(Preis) ermittelt werden. Schreiben Sie einen geeigneten Trigger. Testen Sie den Trigger."

Mein Trigger sieht folgendermaßen aus(Trigger wurde ohne Fehler erstellt)


```
Create Trigger Mwst_Trigger
Before insert or Update on Artikel
Referencing new as neu for each row
Declare
mwst numeric(8,2);
brutto numeric(8,2);
begin
select :neu.netto*1.19
into brutto
from Artikel;
select (:neu.netto/100)*19
into mwst
from Artikel;
:neu.Preis := brutto;
:neu.Steuer:= mwst;
END;
/
```

Wie muss ich jetzt die Werte setzten, dass die Daten auch tatsächlich in die Tabelle geschrieben werden?

Die Tabelle Artikell hat folgende Spalten:

ANR,BEZEICHNUNG,NETTO,STEUER,PREIS,FARBE,MASS,EINHEIT,TYP

Wollte es so versuchen, da steuer und preis ja autom. gesetzt werden sollten


```
Insert into Artikel(Anr,Bezeichnung,netto,farbe,mass,einheit,typ)
values(600001,'Test',700,Rot,null,'ST',E);
```

Fehlermeldung:
"Spalte hier nicht zulässig

Wie muss der insert-Befehl aussehen, damit die Mwst und der Bruttopreis automatisch gesetzt werden?

Vielen Dank


----------



## BuckRogers (17. Mai 2016)

DaSt hat gesagt.:


> *VALUES*(600001,'Test',700,Rot,*NULL*,'ST',E);



Erstmal würde ich spontan behaupten dass Rot und E in Quotes gesetzt werden muss, da es sich um einen String handelt.

Also:


```
VALUES(600001, 'Test', 700, 'Rot', NULL, 'ST', 'E');
```


----------

