In MYSQL übsrprüfen beim Insert, ob Eintrag existiert

dimitrif

Lt. Junior Grade
Registriert
Juli 2004
Beiträge
394
Hallo, Leute.

Ich habe eine Frage. In MySQL gibt es eine Möglichkeit bei CREATE TABLE eine Option hinzufügen IF NOT EXISTS, sodass überrüft wird, ob Daten schon eingegeben sind. Wenn ja, dann kommt keine Fehlermeldung und passiert überhaupt nichts.

Nun, will ich eine ähnliche Funktion bei INSERT haben. Get es? Kann ich testen beim einfügen in eine Tabelle, ob Daten da vorhanden sind - wenn NEIN, dann hinzufügen, wenn JA, dann nichts machen. Gibt es dafür ein extra Befehl?


Danke
 
Hi, am besten setzt du vorher einen Count (Select count(*)....) ab und prüfst dann auf ==0 wenn ja dann machst du das insert. Ein Count braucht meistens extrem wenig zeit. Eine direktere Möglichkeit kenne ich nicht.
 
PHP:
$anzahl_datensaetze = mysql_num_rows(mysql_query("select * from...."));

if($anzahl_datensaetze == 0)
{
	//insert_statement
}
else
{
      //irgenwas anderes
}
 
ich will ja nicht kleinlich wirken ;-) aber ich würd empfehlen es über ein select count(*) statement und nicht über mysql_num_rows zu machen.

mysql_num_rows führt die abfrage aus ruft alle datensätze ab und zählt diese dann.

select count(*) lässt mysql die ergebnisse zählen und ruft nur das ergebniss dieser zählung ab.
die obige if abfrage musst du dafür nur gerungfügig verändern.
 
Danke sehr allen, die mir geholfen haben.
Ich habe hier auch überall gesucht und überhaupt nicht an COUNT gedacht, wobei das ist auch sehr interessant ist und vielleicht sogar leichter als das was ich gefunden habe.

Ich habe diese Möglichkeit entdeckt:

Dim conn As Connection
Dim r As New Recordset
'Dim p As String
Set conn = New Connection

p = newtabname.Text

MsgBox p
conn.Open "Provider=MSDASQL;Driver=MySQL ODBC 3.51 Driver;Server=192.168.0.1;UID=user;PWD=;database=test"
r.Open "Konten", conn, adOpenDynamic, adLockOptimistic
r.MoveFirst
r.Find ("Tabname = '" & p & "'")

If r.EOF Then
MsgBox "nichts"
Else
MsgBox "ja"
End If

r.Close


so was.........
 
ich würd sagen ein count ist einfacher und schneller da mysql dafür wirklich sehr wenig zeit braucht.
zudem erinnert mich das was du so gepostet hast an VB und da versteh ich eh nur die hälfte, da fehlen mir auch immer die ";" ;-)
 
Ja, das ist VB.
Ich mache das in einer Excel Tabelle

Danke für die Hilfe
 
Zurück
Oben