[MySQL] Überpürfen vor dem Einfügen

zer0

Erfahrenes Mitglied
Hallo,

ist es möglich in Insert Statement eine Überprüfung mit einzubauen ob Datensatz so schon vorhanden ist, und wenn ja dann wird eine Zahl angehängt.

Ich will Permalink erstellen, und wenn der gleiche Link bereits vorhanden ist in der Tabelle soll der trotzdem eingefügt werden, jedoch mit einer 1 oder 2 am ende.

Ist das möglich?
 
Ich denke die einzige und korrekte Möglichkeit ist durch einen Trigger (ON BEFORE INSERT).

Aber die einfachste Möglichkeit wäre es vorher ein SELECT zu machen. Aber sobald du mehr als eine Anwendung hast, welche auf die Datenbank zu greift, kommst du wieder in Teufels Küche. Dann musst du immer daran denken, dass zu prüfen und es auch Dokumentieren.
Wenn du aber einen Trigger nimmst, dann "funktioniert es einfach" aus Sicht der Anwendung.
 
Hallo,

das mit dem Trigger ist im Prinzip gut. Aber das Problem das sich ergibt hast du ja schon genannt.
Ist es nicht möglich ein SELECT in den INSERT mit ein zubauen, und mit einer IF Abfrage auch innerhalb des Querys zu kombinieren?

Gruß
 
Hab da was gebastelt. Wenn du aber statt des anhängens eine extra Spalte dafür nehmen würdest (int), wäre das wesentlich besser als diese String-Sachen.

SQL:
INSERT INTO links (link) SELECT
	IF(EXISTS (SELECT @salt:=MAX(CAST(REPLACE(link, 'der_link', '') AS UNSIGNED)) FROM links WHERE link LIKE 'der_link%'),
		CONCAT('der_link', @salt:=@salt+1),
		'der_link')
 

Neue Beiträge

Zurück