Ankündigung

Einklappen
Keine Ankündigung bisher.

Trigger/Procedure Erstellung (Guthaben bei neuem Kunden, Hallo)

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Trigger/Procedure Erstellung (Guthaben bei neuem Kunden, Hallo)

    Hallo,
    ich schreibe demnächst eine Klausur und benötige ein paar Muster-Trigger/Procedures.
    Zum einen möchte ich gerne eine Procedure erstellen, die zu Beginn "Hallo %Benutzername%" ausgibt.

    Die "Hallo-Procedure" habe ich soweit geschrieben:

    Code:
    CREATE PROCEDURE 'Hallo' (OUT 'isvalid' VARCHAR(80)) NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER BEGIN SET isvalid = 'Hallo';
    END
    CALL 'Hallo'(
    @p0
    );
    SELECT @p0 AS 'isvalid';
    Ich weiß allerdings nicht, wie ich dort eine Variabel, die den Benutzernamen ausgibt, einfügen soll.

    Des Weiteren benötige ich einen Trigger, der jedem neu angelegten Benutzer einen bestimmten Betrag zuweist. Habt ihr da eine Idee?
    Code:
    CREATE TRIGGER `guthaben` BEFORE INSERT ON `kunde` FOR EACH ROW INSERT INTO `wetten`.`kunde` (`ID`, `vorname`, `name`, `guthaben`) VALUES (NULL, '', '', '5');
    in dem Fall ein Guthaben von "5", aber ich denke so funktioniert das nicht.

    Vielen Dank für Antworten!

  • akretschmer
    antwortet
    Zitat von petepan Beitrag anzeigen
    Hallo,

    danke für die Antworten!

    @akretschmer Hast du dafür eine genaue Befehlsliste (besonders für CREATE TRIGGER/FUNCTION)?

    Natürlich. Die Doku.

    Code:
    Command:     CREATE TRIGGER
    Description: define a new trigger
    Syntax:
    CREATE [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] }
        ON table_name
        [ FROM referenced_table_name ]
        { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } }
        [ FOR [ EACH ] { ROW | STATEMENT } ]
        [ WHEN ( condition ) ]
        EXECUTE PROCEDURE function_name ( arguments )
    
    where event can be one of:
    
        INSERT
        UPDATE [ OF column_name [, ... ] ]
        DELETE
        TRUNCATE
    und

    Code:
    Command:     CREATE FUNCTION
    Description: define a new function
    Syntax:
    CREATE [ OR REPLACE ] FUNCTION
        name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] )
        [ RETURNS rettype
          | RETURNS TABLE ( column_name column_type [, ...] ) ]
      { LANGUAGE lang_name
        | WINDOW
        | IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF
        | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
        | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
        | COST execution_cost
        | ROWS result_rows
        | SET configuration_parameter { TO value | = value | FROM CURRENT }
        | AS 'definition'
        | AS 'obj_file', 'link_symbol'
      } ...
        [ WITH ( attribute [, ...] ) ]
    In Kurzform. Die Online-Doku im Web ist ausführlicher.

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    Zitat von petepan Beitrag anzeigen

    oder so? Nur wie fische ich dann die neuen Benutzer aus?


    Danke!

    NEW ist Dein neuer Freund.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ist der Trigger in etwa so zu realisieren?

    Code:
    //1 = neuer Kunde ; 0 = Bestandskunde
    CREATE TRIGGER Standardwert ON kunde
    FOR INSERT
    AS
    IF ((SELECT neuerkunde FROM kunde) == 1)
    BEGIN
    UPDATE kunde 
    SET guthaben = 5);
    END
    oder so? Nur wie fische ich dann die neuen Benutzer aus?

    Code:
    DELIMITER //
    
    CREATE TRIGGER Guthabenpruefung AFTER INSERT 
    ON Kunde FOR EACH ROW BEGIN UPDATE Kunde SET Guthaben = 
    Guthaben+5 WHERE ID = ???; 
    
    END;
    
    // DELIMITER ;
    Danke!

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Hallo,

    danke für die Antworten!

    @akretschmer Hast du dafür eine genaue Befehlsliste (besonders für CREATE TRIGGER/FUNCTION)?
    @Tropi Ich nutze MySQL mit phpMyAdmin als Administrationsoberfläche.

    Einen Kommentar schreiben:


  • Tropi
    antwortet
    Welches Datenbanksystem verwendest du denn? Gerade bei Umgebungsvariablen wie z.B. User ist das kaum einheitlich.

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    Zitat von petepan Beitrag anzeigen
    Hallo,
    ich schreibe demnächst eine Klausur und benötige ein paar Muster-Trigger/Procedures.


    Vielen Dank für Antworten!
    Code:
    test=# create or replace function hallo(out message text) as $$begin message = 'Moin moin'; end; $$language plpgsql;
    CREATE FUNCTION
    Time: 0,618 ms
    test=*# select hallo();
       hallo
    -----------
     Moin moin
    (1 row)
    
    Time: 0,192 ms
    test=*# create table t1 (user_id int, name text);
    CREATE TABLE
    Time: 6,705 ms
    test=*# create table t2 (user_id int, wert int);
    CREATE TABLE
    Time: 0,769 ms
    test=*# create or replace function my_insert() returns trigger as $$begin insert into t2 values (new.user_id, 5); return new; end; $$language plpgsql;
    CREATE FUNCTION
    Time: 0,461 ms
    test=*# create trigger my_trigger after insert on t1 for each row execute procedure my_insert();
    CREATE TRIGGER
    Time: 0,423 ms
    test=*# insert into t1 values(1, 'max');
    INSERT 0 1
    Time: 0,690 ms
    test=*# select * from t2;
     user_id | wert
    ---------+------
           1 |    5
    (1 row)

    Und jetzt lies endlich die Doku!

    Einen Kommentar schreiben:

Lädt...
X