Insert wenn nicht vorhanden

Alice

Erfahrenes Mitglied
Hallo.

Ich habe in einer Tabelle 3 Spalten.

Tabelle: Read_Posts

1. Spalte: User_ID
2. Spalte: Post_ID
3. Spalte: Unix_TS (Timestamp)

Nun möchte ich beim eintragen (Insert) überprüfen, dass User_ID und Post_ID nicht doppelt eingetragen werden. Wenn User_ID und Post_ID bereits vorhanden sind, soll nichts eingetragen werden.

SQL:
INSERT INTO Read_Posts (User_ID, Post_ID, Unix_TS)
SELECT User_ID, Post_ID FROM Read_Posts
WHERE NOT EXISTS(
SELECT User_ID, Post_ID FROM Read_Posts WHERE User_ID=$User_ID AND Post_ID=$Post_ID
) LIMIT 1

Das funktioniert nicht, weil eine Spalte "Unix_TS" in der Abfrage fehlt.

Wie kann ich das lösen?
 
erzeuge einen UNIQUE KEY über User_ID und Post_ID, dann gibt es keine Dubletten(das INSERT schlägt einfach fehl)
 
Geht auch mit User_ID und Post_ID als Primärschlüssel nicht.

So geht es...

SQL:
INSERT INTO Read_Posts (User_ID, Post_ID, Unix_ID)
SELECT * FROM (SELECT $User_ID, $Post_ID, $Unix_ID) AS tmp
WHERE NOT EXISTS (
SELECT User_ID, Post_ID FROM Post_Reader WHERE User_ID=$User_ID AND Post_ID=$Post_ID
) LIMIT 1
 
Zurück