# vor/nach INSERT mysql-SETS absetzen



## rwolf (13. Sep 2012)

also, ich brauche vor einem Insert bestimmte Einstellungen, die nachher zurückgesetzt werden,
dafür hab ich mitm JAva ein Funtion ertstellt , die mit derselben Conn. , mit auch der Insert läuft,
die Einstellungen setzen soll, seht selbst :


```
private static void run_set_scripts(Connection cn_sp,String modus)
    {
        //-Einstellungen mittels SET-Kommando --
        String set_sql = "";
        if(modus.startsWith("PRE"))
        {
            set_sql = "SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;";
            //set_sql += "SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS;";
            set_sql += "SET FOREIGN_KEY_CHECKS = 0;";
        }    
        if(modus.startsWith("POST"))
        {
            //set_sql = "SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;";
            set_sql = "SET FOREIGN_KEY_CHECKS = 1;";
            set_sql += "SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;";
        }    
        
        try
        {    
            cn_sp.setAutoCommit(true);
            Statement stmt = cn_sp.createStatement();
            stmt.executeUpdate(set_sql);
            System.out.println("ttsp_func_data run_set_scripts modus "+modus+" set_sql : "+set_sql+" ausgefuehrt !");             
        }
        catch (Exception e)
        {
            System.err.println("ttsp_func_data run_set_scripts modus "+modus+" Fehler : "+e.getMessage());
           //e.printStackTrace();
        }    
    }
```

Obwohl ich die SET-Anweisungen einem Skript entnommen habe, das mit sqldump erzeugt wurde, wirft Java immer einen SQL-Fehler :

ttsp_func_data run_set_scripts modus PRE Fehler : 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 'SET FOREIGN_KEY_CHECKS = 0' at line 1

was soll daran falsch sein ?

in der MySQL-Workbench wirft SET FOREIGN_KEY_CHECKS = 0 auch keinen Fehler, wirkt sich aber auch nicht aus.

Derzeit schreibt das Programm nur 10 von 109 Zeilen in die Zieldatei, nicht der wahre Jakob 

was tun, sprach Zeus ..


----------



## SlaterB (13. Sep 2012)

ein normales Statement kann auch nur einen SQL-Befehl enthalten,
keine zwei, kein Semikolon,

mache alles nacheinander oder suche nach Batch in dem Zusammenhang


----------



## rwolf (13. Sep 2012)

jou, klar..konte ja nicht gehen..hab jetzt n array von den sql-befehlen gemacht und per schleife abarbeiten lassen..funzt super !

nochmals danke schön !


----------

