SQL Trigger erstellen < Datenbanken < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 16:56 Di 05.07.2011 | Autor: | Xnyzer |
Aufgabe | Legen Sie eine Tabelle UPDATEWATCHER an mit den Attributen (tabellenname char(20), anzahl number) und machen Sie ein Insert mit VALUES(’meine cocktails’, 0).
Erzeugen Sie einen Trigger der bei jedem Update auf der Tabelle MEINE COCKTAILS ein entsprechendes Update auf der Tabelle UPDATEWATCHER ausfu ̈hrt. Also das Attribut Anzahl beim Attribut tabellenname=’meine cocktails’ um 1 hochsetzt. |
Der erste Teil ist kein Problem. Eine Tabelle anlegen kann ich und habe ich gemacht.
Mit dem zweiten Teil komme ich nicht klar!
Finde im Internet auch keine wirkliche Hilfe..
Was ich bisher habe:
CREATE updatetrigger
FOR meine_cocktails
AFTER UPDATE
AS
BEGIN
UPDATE updatewatcher
SET anzahl = (select anzahl from updatewatcher where tabellenname = 'meine_cocktails') +1
WHERE tabellenname = 'meine_cocktails';
END;
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 19:14 Di 05.07.2011 | Autor: | rainerS |
Hallo!
> Legen Sie eine Tabelle UPDATEWATCHER an mit den Attributen
> (tabellenname char(20), anzahl number) und machen Sie ein
> Insert mit VALUES(’meine cocktails’, 0).
>
> Erzeugen Sie einen Trigger der bei jedem Update auf der
> Tabelle MEINE COCKTAILS ein entsprechendes Update auf der
> Tabelle UPDATEWATCHER ausfu ̈hrt. Also das Attribut Anzahl
> beim Attribut tabellenname=’meine cocktails’ um 1
> hochsetzt.
>
> Der erste Teil ist kein Problem. Eine Tabelle anlegen kann
> ich und habe ich gemacht.
> Mit dem zweiten Teil komme ich nicht klar!
> Finde im Internet auch keine wirkliche Hilfe..
>
> Was ich bisher habe:
>
> CREATE updatetrigger
> FOR meine_cocktails
> AFTER UPDATE
AS
>
BEGIN
> UPDATE updatewatcher
> SET anzahl = (select anzahl from updatewatcher where
> tabellenname = 'meine_cocktails') +1
> WHERE tabellenname = 'meine_cocktails';
>
END;
Du schreibst leider nicht, um welche Datenbank-Software es hier geht. Da gibt es gewisse Unterschiede in der Syntax: z.B ist "AS" nur in MS/SQL nötig, in anderen SQL-Dialekten zuviel. Unabhängig davon ist deine Syntax falsch; es muss heißen:
CREATE TRIGGER updatetrigger
(nicht: CREATE updatetrigger)
ON meine_cocktails
(nicht: FOR meine_cocktails)
Mehr davon, wenn du uns verrätst, für welche Datenbankmaschine der SQL-Code erstellt werden soll.
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 20:29 Di 05.07.2011 | Autor: | Xnyzer |
ich benutze oracle sql developer und dahinter liegt eine SQL95 datenbank
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 21:57 Di 05.07.2011 | Autor: | rainerS |
Hallo!
>
> ich benutze oracle sql developer und dahinter liegt eine
> SQL95 datenbank
>
Ich weiss nicht, was eine SQL95-Datenbank ist, aber in In Oracle SQL wird ein Trigger so erzeugt:
CREATE OR REPLACE TRIGGER updatetrigger
BEFORE UPDATE ON tabelle
pl/sql_block
wobei in deinem Fall der pl/sql_block die Form
BEGIN
...
END
hat.
Viele Grüße
Rainer
|
|
|
|