|
You last visited: Today at 17:31
Advertisement
[MySQL] insert nur, wenn Eintrag nicht existiert
Discussion on [MySQL] insert nur, wenn Eintrag nicht existiert within the Web Development forum part of the Coders Den category.
12/10/2014, 20:11
|
#16
|
elite*gold: 0
Join Date: Sep 2008
Posts: 9,484
Received Thanks: 3,109
|
Ausserhalb von Funktionen kann man die IF Anweisung soweit ich weiß nicht verwenden in MySQL.
|
|
|
12/10/2014, 20:18
|
#17
|
elite*gold: 2778
Join Date: Feb 2012
Posts: 3,527
Received Thanks: 1,044
|
und wie würde es dann aussehen wenn ich den Query in PHP ausführen will?
|
|
|
12/10/2014, 23:21
|
#18
|
elite*gold: 307
Join Date: Jul 2009
Posts: 1,091
Received Thanks: 434
|
|
|
|
12/11/2014, 13:25
|
#19
|
elite*gold: 2778
Join Date: Feb 2012
Posts: 3,527
Received Thanks: 1,044
|
Joa ... ich vermute es ist immer noch der selbe Fehler
Code:
mysql> IF EXISTS(SELECT `type` FROM `words` WHERE `wort`= Value(`wort`)) THEN
BEGIN
UPDATE `words`
SET `type` = Value(`type`), `update` = Value(`update`)
WHERE `wort`= Value(`wort`)
END
ELSE
BEGIN
INSERT INTO `words` (`wort`, `type`, `update`)
VALUES ('ich', 'Pronomen', '1418036206')
END
END IF;
1064 - 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 'IF EXISTS(SELECT `type` FROM `words` WHERE `wort`= Value(`wort`)) THEN
BEGIN
' at line 1
|
|
|
12/12/2014, 00:34
|
#20
|
elite*gold: 307
Join Date: Jul 2009
Posts: 1,091
Received Thanks: 434
|
Quote:
Originally Posted by Menan
Ausserhalb von Funktionen kann man die IF Anweisung soweit ich weiß nicht verwenden in MySQL.
|
Quote:
Originally Posted by Warnuk3r
|
Quote:
Originally Posted by Mr.Tr33
Joa ... ich vermute es ist immer noch der selbe Fehler
Code:
mysql> IF EXISTS(SELECT `type` FROM `words` WHERE `wort`= Value(`wort`)) THEN
BEGIN
UPDATE `words`
SET `type` = Value(`type`), `update` = Value(`update`)
WHERE `wort`= Value(`wort`)
END
ELSE
BEGIN
INSERT INTO `words` (`wort`, `type`, `update`)
VALUES ('ich', 'Pronomen', '1418036206')
END
END IF;
1064 - 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 'IF EXISTS(SELECT `type` FROM `words` WHERE `wort`= Value(`wort`)) THEN
BEGIN
' at line 1
|
Deine erste Zeile ist immer noch falsch.
|
|
|
12/12/2014, 10:42
|
#21
|
elite*gold: 2778
Join Date: Feb 2012
Posts: 3,527
Received Thanks: 1,044
|
Quote:
Originally Posted by Warnuk3r
Deine erste Zeile ist immer noch falsch.
|
Ja und wie wäre es denn dann richtig?
Nach den "Vorlangen" im Link gehts ja auch nicht, wie oben beschrieben.
Wenn ich es nicht selbst herausfinden würde, dann würde ich nicht wohl nach Hilfe fragen.
|
|
|
12/12/2014, 16:56
|
#22
|
elite*gold: 0
Join Date: Apr 2010
Posts: 10,289
Received Thanks: 3,613
|
versuch mal
Code:
IF (SELECT `type` NOT NULL FROM `words` WHERE `wort`= Value(`wort`)) THEN
BEGIN
UPDATE `words`
SET `type` = Value(`type`), `update` = Value(`update`)
WHERE `wort`= Value(`wort`)
END
ELSE
BEGIN
INSERT INTO `words` (`wort`, `type`, `update`)
VALUES ('ich', 'Pronomen', '1418036206')
END
END IF;
|
|
|
12/12/2014, 20:56
|
#23
|
elite*gold: 2778
Join Date: Feb 2012
Posts: 3,527
Received Thanks: 1,044
|
Code:
mysql> IF (SELECT `type` NOT NULL FROM `words` WHERE `wort`= Value(`wort`)) THEN
BEGIN
UPDATE `words`
SET `type` = Value(`type`), `update` = Value(`update`)
WHERE `wort`= Value(`wort`)
END
ELSE
BEGIN
INSERT INTO `words` (`wort`, `type`, `update`)
VALUES ('ich', 'Pronomen', '1418036206')
END
END IF;
1064 - 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 'IF (SELECT `type` NOT NULL FROM `words` WHERE `wort`= Value(`wort`)) THEN
BEG' at line 1
|
|
|
12/14/2014, 01:28
|
#24
|
elite*gold: 44
Join Date: May 2010
Posts: 2,053
Received Thanks: 1,747
|
Quote:
Originally Posted by Shawak
Code:
SELECT `type` NOT NULL FROM ...
|
Was ist das denn?
Wie auf StackOverflow beschrieben lässt sich der IF-Block nicht außerhalb von Funktionen verwenden.
Ich würde empfehlen entweder die wort-Spalte als UNIQUE zu definieren (genauer: zu einem UNIQUE-Index hinzuzufügen), oder tatsächlich mehrere Queries zu verwenden.
Ersteres würde auch helfen, die Integrität der Daten sicherzustellen, da dann unter keinen Umständen ein wort-Wert doppelt eingefügt werden kann.
Code:
ALTER TABLE `words` ADD UNIQUE `wort_index`(`wort`);
|
|
|
12/14/2014, 12:06
|
#25
|
elite*gold: 2778
Join Date: Feb 2012
Posts: 3,527
Received Thanks: 1,044
|
Man kann aber ein UNIQUE nicht auf ein text Type setzen. Und meine wort Spalte ist ein text Type.
|
|
|
12/14/2014, 19:00
|
#26
|
elite*gold: 44
Join Date: May 2010
Posts: 2,053
Received Thanks: 1,747
|
Quote:
Originally Posted by Mr.Tr33
Man kann aber ein UNIQUE nicht auf ein text Type setzen. Und meine wort Spalte ist ein text Type.
|
Wenn es sich bei den Werten für wort um prinzipiell eher kurze Daten handelt (z.B. ein einzelnes Wort), wäre der VARCHAR-Typ evtl. vorzuziehen.
Dieser wird üblicherweise (anders als TEXT und BLOB) "inline" mit der Zeile gespeichert ( TEXT und BLOB verwenden Pointer auf extra gespeicherte Werte). Wenn die Performance oder Größe deiner Tabelle nicht durch sehr lange Text-Werte leiden, wäre VARCHAR die bessere Wahl.
Besonders wenn deine Anwendung auch die wort-Spalte zum Selektieren verwendet, wäre ein inline-Typ mit der Möglichkeit zur Indizierung einem nicht indizierbaren, extern gespeicherten Typ vorzuziehen.
|
|
|
12/15/2014, 22:01
|
#27
|
elite*gold: 2778
Join Date: Feb 2012
Posts: 3,527
Received Thanks: 1,044
|
Öhm, weiß jetzt nicht wie weit mir das jetzt wirklich bei meinem Problem hilft, aber ich habe es jetzt einfach mal umgesetzt.
Diese Meldung kommt nur, wenn ich ein Key Length angebe und dies kann ich nur angeben, wenn ich einen Primary Key setze.
|
|
|
12/15/2014, 23:09
|
#28
|
elite*gold: 199
Join Date: Dec 2010
Posts: 2,161
Received Thanks: 2,696
|
Setz mal die length von dem varchar auf 255 und teste es nochmal.
|
|
|
12/15/2014, 23:18
|
#29
|
elite*gold: 2778
Join Date: Feb 2012
Posts: 3,527
Received Thanks: 1,044
|
selbes Problem :/
|
|
|
 |
|
Similar Threads
|
PHP / MYSQL Insert REAGIERT NICHT
05/05/2014 - Web Development - 9 Replies
Hallo leute,
wollte mittels eines PHP-Scripts Daten in meine Tabelle einfügen.
Es kommt auch keine Fehlermeldung wenn ich bsp. OR DIE ("Fail"); hinzufüge, allerdings
werden die Einträge einfach nicht in die Tabelle übertragen.
Erkennt ihr einen Fehler?
<html>
<head>
<title> Test </title>
|
MySQL INSERT INTO trägt nicht alle Daten aus Formular ein
08/26/2012 - Web Development - 14 Replies
Hallo, ich wollte mir eine kleine Regi basteln.
Dabei stoße ich auf das Problem, dass Username sowie Password eingetragen werden aber die E-Mail nicht. Hier einmal der komplette Code sowie DB:
Das Formular:
<link rel="stylesheet" type="text/css" href="../style.css" />
<h3>Registrierung</h3>
<form action="index.php?page=reg" method="post" id="regist">
<table width="400" border="0" align="center">
<tr>
|
Mysql 5.5 fehler Account existiert bereits
06/07/2012 - Metin2 Private Server - 6 Replies
Hallo
Ich habe seit dem ich Mysql 5.5 benutze den fehler beim hen! cms Account existiert bereits bei jede anmeldung aber account tabelle ist leer bei mysql 5.0 geht alles
|
[Release] MySQL Insert system
07/18/2010 - CO2 PServer Guides & Releases - 18 Replies
Ello!
First of all, this is NOT sourcedependent, which means you can use this on any source without modifying the code.
This is an replacement for all of you who still uses normal MySQL queries. Use this code to clean up, make it easier and more orginazed.
Here's how it looks:
Example: (Original (LOTF for example))
|
[HELP]C# MySQL Command insert if not exsist?
09/04/2009 - CO2 Private Server - 8 Replies
MySqlCommand Command = new MySqlCommand("INSERT INTO accounts(AccountID,LogonType) VALUES ('" + fillBox.Text + "','3')", Connection);
Now, I want it to check if the value of fillBox.Text doesn't excist before making the account, so It wont create the same account. I tried making it in a try, that didn't help, it just make several accounts with the same name.
~Bas
|
All times are GMT +1. The time now is 17:32.
|
|