2016-07-21 14 views
0

ist, würde ich gerne wissen, ob es eine Möglichkeit gibt, eine Zeile in eine Tabelle einfügen, wenn IF-Bedingung erfüllt ist:INSERT nur, wenn IF-Bedingung wahr

SET @Value1 := '1'; 
SET @Value2 := '2'; 
IF(@Value2 >= @Value1) 
    THEN INSERT INTO `Table` 
    (`Row1`, `Row2`) 
    VALUES 
    ('Valuecheck', 'Second value is greater than first value'); 
END IF; 

MySQL meldet einen Fehler # 1064 - Sie habe einen Fehler in deiner SQL-Syntax, aber ich kann nicht finden, dass etwas falsch ist. Einfügen sollte nur ausgeführt werden, wenn IF-Klausel wahr ist.

+1

Sie nicht, dass die Form von 'IF' in SQL-Skripte verwenden können, nur Procs und Funktionen und Trigger gespeichert. – Uueerdo

Antwort

1

Basierend auf this answer sollten folgende Arbeiten:

SET @Value1 := '1'; 
SET @Value2 := '2'; 
INSERT INTO `table` (`Row1`, `Row2`) 
    VALUES 
    ('Valuecheck', 'Second value is greater than first value'); 
WHERE @Value2 >= @Value1 
+0

Sie müssen bearbeiten; Diese Antwort verwendet nicht "VALUES", aber die Antwort, auf die verwiesen wird, ist angemessen. – Uueerdo

+0

Vielen Dank, das Verfahren funktioniert jetzt. – Peter

1

Sie können eine INSERT...SELECT tun und setzen Sie Ihre Bedingung (en) in einer WHERE Klausel; Da MySQL jedoch FROM erfordert und Sie nicht auf eine Tabelle verweisen, müssen Sie die "Dummy" -Tabelle namens DUAL verwenden.

Wie so:

SET @Value1 := '1'; 
SET @Value2 := '2'; 

INSERT INTO `Table`(`Row1`, `Row2`) 
SELECT 'Valuecheck', 'Second value is greater than first value' 
FROM DUAL 
WHERE @Value2 >= @Value1 
;