Datenbank Forum - für Anfänger und Profis

Willkommen im Datenbank Forum von Datenbanken-verstehen.de - Das Datenbank, Data Warehouse & Business Intelligence Forum!

Das Datenbank Forum für Anfänger und Profis ist eine Community zu den Themen Datenbanken, Data Warehouse & Business Intelligence. Nimm teil an der Community von Datenbanken-verstehen.de und tausch dich mit deinen Fragen und Lösungen mit anderen Nutzern aus.

Als registrierter Benutzer genießt Du viele Vorteile, wie

  • den vollen Zugang zu allen Foren und Unterforen
  • Kostenloses Lernmaterial inkl. Lösungen zum Thema Datenbanken
  • Zugriff auf DB-Tutorials, Best Practices und SQL-Snippets

Bevor Du einen Beitrag verfassen möchtest, kannst Du dich einfach kostenlos registrieren.

oder Einloggen mit



Beachte bitte die Forenregeln von Datenbanken-verstehen.de. Wir wünschen Dir viel Spaß im Datenbank Forum! - Dein Datenbanken-verstehen.de-Team

Hilfe bei Datenbankaufgabe (Trigger-Problem)

Alles zur Datenbankentwicklung im Oracle-Umfeld...

Hilfe bei Datenbankaufgabe (Trigger-Problem)

Beitragvon real91 » Di 6. Sep 2016, 16:14

Hallo ich brauche dringend Hilfe bei folgender Datenbank-Aufgabe die mit Hilfe eines Triggers werden soll.
Ich habe die versucht die Aufgabe mittels eines Cursors zu lösen, jedoch funktioniert es nicht.
Meinen versuchten Lösungsweg habe ich hier auch eingefügt.

Aufgabenstellung:
Die Summer aller Gehälter darf ein bestimmtes Budget nicht überschreiten. Es soll ein Trigger "trg_budget_check" erstellt werden, der beim Hinzufügen eines neuen Mitarbeiters in der Tabelle 'Angestellte' und beim Überschreitung eines Gesamtbudgets von 100.000 alle Gehälter, die höher als 5000 sind, auf 5000 kürzt.

Mein Lösungsweg
CREATE OR REPLACE TRIGGER trg_budget_check
AFTER INSERT ON angestellte
DECLARE
k angestellte%ROWTYPE;
summe angestellte.gehalt%TYPE;
CURSOR gehalt_cur IS
SELECT * FROM angestellte;
BEGIN
SELECT sum(gehalt) INTO summe FROM angestellte;
IF summe > 100000 THEN
OPEN gehalt_cur;
FETCH gehalt_cur INTO k;
WHILE gehalt_cur%FOUND LOOP
IF k.gehalt > 5000 THEN
UPDATE angestellte
SET angestellte.gehalt = 5000
WHERE k.ang_nr = angestellte.ang_nr;
END IF;
FETCH gehalt_cur INTO k;
END LOOP;
CLOSE gehalt_cur;
END IF;
END;
real91
 
Beiträge: 1
Registriert: Di 6. Sep 2016, 16:04

Re: Hilfe bei Datenbankaufgabe (Trigger-Problem)

Beitragvon SQLUnion » Di 6. Sep 2016, 19:02

Hallo real91,

willkommen im Forum.

1. Regel: Cursor sind out, egal welches DBMS :D

Warum vermischt Du Cursor mit Trigger?
Ein Trigger kann auf zwei Arten ausgeführt werden: BEFORE und AFTER.

Was Du benötigst ist ein Trigger, der beim Hinzufügen den Wert prüft, kürzt und commited...

Gruß,
SQLUnion
SQLUnion
 
Beiträge: 154
Registriert: Fr 1. Nov 2013, 15:54


Zurück zu Oracle

 


  • Related topics
    Antworten
    Zugriffe
    Letzter Beitrag

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron
  • Jetzt Fan werden
  • Newsletter abonnieren? Hier anmelden!

    Alle Informationen aus dem Portal, Blog und Forum in einem Newsletter!

    E-Mail-Adresse: