Trigger/Procedure Erstellung (Guthaben bei neuem Kunden, Hal

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
wattestäbchen
Mitglied
Beiträge: 1
Registriert: 26.05.2014 13:00

Trigger/Procedure Erstellung (Guthaben bei neuem Kunden, Hal

Beitrag von wattestäbchen »

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: Alles auswählen

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: Alles auswählen

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!
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Trigger/Procedure Erstellung (Guthaben bei neuem Kunden,

Beitrag von Miriam »

Moin,


zum ersten Problem, könnte das ein Ansatz sein:

Code: Alles auswählen

DROP PROCEDURE IF EXISTS `hello_user` ;

CREATE DEFINER = `root`@`localhost` PROCEDURE `hello_user` ( IN `uname` VARCHAR( 32 ) ) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER 
BEGIN 
SELECT concat( 'Hello ', uname ) ;
END
Aufruf:

Code: Alles auswählen

 CALL `hello_user`('Miriam');
Ergebnis:

Code: Alles auswählen

Hello Miriam
Mußt natürlich vorher eine DB auswählen.

Zum 2. Problem: Da würde ich die Tabelle entsprechend formatieren, also daß der default Wert des Guthabens bei jedem immer 5 (Erdbeeren oder was auch immer) ist.

Code: Alles auswählen

CREATE TABLE IF NOT EXISTS `kunde` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `vorname` varchar(32) NOT NULL,
  `name` varchar(32) NOT NULL,
  `guthaben` float NOT NULL DEFAULT '5',
  PRIMARY KEY (`ID`)
) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Dieser INSERT würde dann dem Kunden immer 5 (irgendwas zuordnen):

Code: Alles auswählen

INSERT INTO `kunde` ( `ID` , `vorname` , `name` ) VALUES (NULL , 'Miriam', 'Mustermann');
Aber wenn es denn nun ein Trigger sein muß:

Code: Alles auswählen

DROP TRIGGER IF EXISTS `ins_guthaben`;

CREATE TRIGGER `ins_guthaben` BEFORE INSERT ON `kunde` FOR EACH ROW BEGIN
IF NEW.name <> '' THEN
    SET NEW.guthaben = 5;
END IF;
END
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Antworten

Zurück zu „Coding & Technik“