Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie zduplikowanych danych
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
zelu
Witam,

kieruję do bazy następujące zapytanie:

  1. INSERT INTO messages_users( message_id, user_id ) SELECT id, {$user_id} FROM messages WHERE channel_id = {$channel_id}


Dodatkowo mam założone UNIQUE na (message_id, user_id).

Jest to zapytanie oznaczające wszystkie wiadomości w danym kanale jako przeczytane.

Wszystko działa fajnie do czasu kiedy w bazie jest już unikatowa para (message_id, user_id). Wtedy co naturalne serwer wyrzuca błąd. I teraz moje pytanie: czy da się jakoś zgrabnie to obejść bez uprzedniego sprawdzania czy podane wartości są już w bazie?
W MySQL jest ON DUPLICATED KEY. Niestety w postgresie nic takiego nie znalazłem.


Pozdrawiam
Zbłąkany
Coś mi śmierdzi w Twojej wypowiedzi. Jak masz klucz UNIQUE na dwóch kolumnach, to niemożliwe jest, byś posiadał w tabeli dwa lub więcej rekordów z powtórzoną kombinacją jednego z nich, bądź obu na raz (zajrzałbym tutaj, a także przeczytałbym jeszcze to ze szczególnym uwzględnieniem punktu 11.8) smile.gif
zelu
Wiadomości wyświetlam w 2 miejscach. W sidebarze i w widoku całego kanału. Przy czym w sidebarze widoczne są tylko nieprzeczytane wiadomości, a w widoku kanału można przeczytać wszystkie wiadomości (nawet jeśli były wcześniej oznaczone jako przeczytane) należące do danego kanału. Dodatkowo w sidebarze można oznaczyć konkretną wiadomość jako przeczytaną, a w widoku kanału mam dodatkowo przycisk "Oznacz wszystkie jako przeczytane", który wywołuje zapytanie z mojego wcześniejszego postu i powoduje błąd, bo w tabeli messages_users są już wcześniej przeczytane w sidebarze wiadomości smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.