phpbar.de logo

Mailinglisten-Archive

INSERT aber nur wenn es den Datensatz noch nicht gibt

INSERT aber nur wenn es den Datensatz noch nicht gibt

henry bayer henry_bayer at gmx.de
Don Dez 11 14:19:34 CET 2003


hallo,

> > Wenn ein neues Review geplant wird, werden bei den Rollen neue E-Mail
> > Adressen eingetragen, es können aber auch solche ausgewählt werden die
> schon
> > in der Tabelle gespeichert sind. Beim Speichern eines Reviews sollen die
> > E-Mail Adressen die noch nicht vorhanden sind in dieser Tabelle
> gespeichert
> > werden. Und hier stehe ich nun an.
> 
> wenn du das Feld `email` UNIQUE machst bekommst du eine Fehlermeldung 
> bei einem INSERT mit einer bereits bestehenden mail-adresse

mmh, nicht ganz richtig, das UNIQUE muss über email UND role, weil sonst
wäre es in dieser sql-struktur nicht möglich, eine email-adresse mit mehrere
verschiedenen rollen reinzuschreiben. oder, wenn die alte rolle nicht benötigt
wird, musste diese zuuerst gelöscht werden.

eine optimale normaliserung der sql-struktur wäre ansonsten:

TB1
id
email

TB2
id
role

TB3
id
email_id
role_id

da wäre dann ein UNIQUE in TB3 über email_id, role_id

je nach datenmengen und weiteren überlegungen in der zukunft würde ich eine
normalisierte version vorziehen.

achja, wenn das INSERT nicht über eine fehlermeldung abgefangen werden soll,
ist auch ein INSERT IGNORE möglich. dann würde bei einer doppelung
stillschweigend nichts geschrieben. spart ein wenig arbeit ;-)

h.

-- 
+++ GMX - die erste Adresse für Mail, Message, More +++
Neu: Preissenkung für MMS und FreeMMS! http://www.gmx.net


-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive