INSERT in IF, geht das?
Stephan
- datenbank
Hallo Selfhtml,
Um zu verhindern, das doppelte Datensätze in eine Tabelle geschrieben werden, würde ich gerne das Testen und eventuelle Schreiben der Daten mittels SQL machen. Das sieht dann erstmal so aus:
SELECT
IF((SELECT np_id FROM notepad_cb WHERE i_id=5) >0,
'exists',
INSERT INTO notepad_cb( np_rubric, np_text, u_id, i_id )
VALUES (SELECT i_rubric
FROM images_cb
WHERE i_id =5, '', 2, 5)
)
phpmyadmin findet aber ab 'INTO' einen Fehler.
Geht es überhaupt, das man in einem IF als alternativ Wert ein INSERT angibt?
Thnx for help,
Stephan
Hallo Stephan,
Um zu verhindern, das doppelte Datensätze in eine Tabelle geschrieben werden, würde ich gerne das Testen und eventuelle Schreiben der Daten mittels SQL machen. Das sieht dann erstmal so aus:
Warum so kompliziert?
SELECT
IF((SELECT np_id FROM notepad_cb WHERE i_id=5) >0,
'exists',
INSERT INTO notepad_cb( np_rubric, np_text, u_id, i_id )
Offensichtlich darf i_id nur ein einziges mal vorkommen. Richtig?
Also sollte diese Spalte mit einem eindeutigen Index versehen sein.
Ist die i_id nicht vergeben, dann ist die Einfügeoperation erfolgreich, ist sie jedoch bereits vergeben, schlägt das INSERT fehl mit der Rückmeldung einer Indexverletzung. Diesen Fehler kannst Du in Deiner Anwendung entsprechend behandeln.
Geht es überhaupt, das man in einem IF als alternativ Wert ein INSERT angibt?
Nein. Du könntest allerdings eine Stored Procedure schreiben, MySQL 5.x vorausgesetzt.
Freundliche Grüße
Vinzenz