mysql init-Script

worst_case

Benutzer
Beiträge
16
Hallo

ich habe mir nach und nach ein Init-Script (sql) geschrieben das ich zum erzeugen der Datenbank verwende.
Jetzt habe ich Trigger hinzugefügt den ich mit DBeaver 24.0.3. getestet habe.
Die Trigger funktionieren, jedoch beim kopieren des Triggers in mein Startscript und laden in die Datenbank kommen Syntaxfehler,
die aber unter DBeaver nicht gekommen sind.

Hier bin ich ratlos ....
Fehlermeldung:
Code:
ERROR 1064 (42000) at line 158: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP TRIGGER IF EXISTS `trigg_update_datenpunktliste`' at line 15
Anbei ein Ausschnitt aus dem init-File.

Code:
/*#####################################################################################*/

DROP TABLE IF EXISTS visuliste;
CREATE TABLE visuliste
(
    spsvarname          char(75)    NOT NULL,
    istwert                INT            DEFAULT NULL     
) DEFAULT CHARSET=utf8 ENGINE=MyISAM;

/*#####################################################################################*/

DROP TRIGGER IF EXISTS `trigg_insert_datenpunktliste`;
CREATE DEFINER=`root`@`%` TRIGGER `trigg_insert_datenpunktliste`
    AFTER INSERT ON `datenpunktliste`
      FOR EACH ROW
           INSERT INTO visuliste VALUE(CONCAT(NEW.spsname, '.', NEW.varname),0)
      
DROP TRIGGER IF EXISTS `trigg_update_datenpunktliste`;
CREATE DEFINER=`root`@`%` TRIGGER `trigg_update_datenpunktliste`
    AFTER UPDATE ON `datenpunktliste`
      FOR EACH ROW
           UPDATE visuliste SET spsvarname = CONCAT(NEW.spsname, '.', NEW.varname)
           WHERE spsvarname = CONCAT(OLD.spsname, '.', OLD.varname)

DROP TRIGGER IF EXISTS `trigg_delete_datenpunktliste`;
CREATE DEFINER=`root`@`%` TRIGGER `trigg_delete_datenpunktliste`
    AFTER DELETE ON `datenpunktliste`
      FOR EACH ROW
            DELETE FROM visuliste
            WHERE spsvarname = CONCAT(OLD.spsname, '.', OLD.varname)
    
/*#####################################################################################*/
/* Tabelle mit Testdaten füllen */

LOCK TABLES datenpunktliste WRITE;
INSERT INTO datenpunktliste (spsname, varname, datentyp, db, `offset`, `bit`, format, nachkomma) VALUES('T1','leitrad','D',501,0,0,'real',1);
INSERT INTO datenpunktliste (spsname, varname, datentyp, db, `offset`, `bit`, format, nachkomma) VALUES('T1','laufrad','D',501,4,0,'real',1);

Eine Formatierung mit DEMITER brachte auch keinen Erfolg.

Code:
DROP TRIGGER IF EXISTS `trigg_insert_datenpunktliste`;
DELIMITER $$

CREATE DEFINER=`root`@`%` TRIGGER `trigg_insert_datenpunktliste`
    AFTER INSERT ON `datenpunktliste`
      FOR EACH ROW
      BEGIN
           INSERT INTO visuliste VALUE(CONCAT(NEW.spsname, '.', NEW.varname),0)
      END$$
      
DELIMITER ;   
/*---------------------------------------------------------------------------------------*/

DROP TRIGGER IF EXISTS `trigg_update_datenpunktliste`;
DELIMITER $$

CREATE DEFINER=`root`@`%` TRIGGER `trigg_update_datenpunktliste`
    AFTER UPDATE ON `datenpunktliste`
      FOR EACH ROW
      BEGIN
           UPDATE visuliste SET spsvarname = CONCAT(NEW.spsname, '.', NEW.varname)
           WHERE spsvarname = CONCAT(OLD.spsname, '.', OLD.varname)
      END$$
      
DELIMITER ;
/*---------------------------------------------------------------------------------------*/

DROP TRIGGER IF EXISTS `trigg_delete_datenpunktliste`;
DELIMITER $$

CREATE DEFINER=`root`@`%` TRIGGER `trigg_delete_datenpunktliste`
    AFTER DELETE ON `datenpunktliste`
      FOR EACH ROW
      BEGIN
            DELETE FROM visuliste
            WHERE spsvarname = CONCAT(OLD.spsname, '.', OLD.varname)
      END$$

Kann mir hier jemand einen Tip geben, warum dies nicht geht ?



Vielen Dank
 
Zuletzt bearbeitet:
Werbung:
Zurück
Oben