PostgreSQL

Wyłączenie PostgreSQL w przypadku konfliktu

Wyłączenie PostgreSQL w przypadku konfliktu
Wyrażenie „Upsert” jest rozpoznawane jako scalanie w RDBMS. „Upsert” jest pomocny w PostgreSQL, jeśli nie chcesz zajmować się unikalnymi błędami naruszenia ograniczeń z powodu powtarzających się wpisów. Gdy uruchomisz ogólne polecenie UPDATE, niezbędne zmiany zostaną wprowadzone tylko wtedy, gdy rekord będzie zgodny ze standardami poleceń; jeśli nie ma takich danych, to nic się nie dzieje. Kiedy dodasz nowy wiersz do tabeli, PostgreSQL zaktualizuje wiersz, jeśli istniał wcześniej, lub włączy nowy wiersz, jeśli wiersz nie istniał. Słowo kluczowe 'Upsert' SQL łączy słowa „update” i „insert.” Ten artykuł pokazuje, jak działa funkcja „Upsert” PostgreSQL, a także jak używać funkcji „Upsert” do dodawania lub aktualizowania informacji, jeśli wstawiony wiersz już istnieje w tabeli.

Składnia

Poniżej znajduje się składnia zapytania „Upsert” ON CONFLICT.

>> INSERT INTO nazwa_tabeli(lista_kolumny) VALUSE (lista_wartości) ON CONFLICT akcja docelowa;

Uruchom powłokę wiersza poleceń PostgreSQL

Aby rozpocząć, uruchom powłokę wiersza poleceń PostgreSQL z menu aplikacji. Podłącz go do wymaganego serwera. Wpisz nazwę bazy danych, nad którą chcesz pracować. Aby pracować na innym porcie, wpisz numer portu i nazwę użytkownika, z którym chcesz pracować. Aby kontynuować z domyślnymi parametrami, pozostaw spacje bez zmian i naciśnij „Enter” przy każdej opcji. Dodaj hasło dla wybranej nazwy użytkownika, a twoja powłoka poleceń powinna być gotowa do użycia.

Przykład 1:

Teraz możemy zacząć od „Upsert” w konflikcie. Załóżmy, że masz w wybranej bazie danych tabelę zatytułowaną „osoba” z polami, które pokazują rekordy różnych osób. Te zapisy zawierają imiona ludzi, ich wiek, miasta i kraje. Tabela jest wyświetlana poniżej.

>> WYBIERZ * OD osoby;

Ważne jest, aby wiedzieć, jak może powstać błąd lub konflikt. Pole tabeli „id”, będące jednocześnie kluczem podstawowym, zawiera wartości od 1 do 15. Gdy użytkownik próbuje wstawić do tabeli kilka zduplikowanych rekordów, pojawia się konflikt.

Wypróbujmy następującą instrukcję INSERT, wstawiając rekordy do tabeli „osoba”. To zapytanie spowoduje błąd, ponieważ wartość „3” pola „id” już istnieje w tabeli.

>> WSTAWIĆ osobę (id, imię, wiek, miasto, kraj) WARTOŚCI ( '3', 'Habib', '45', 'Cakwal', 'Pakistan');

Przykład 2: Upsert z klauzulą ​​ON CONFLICT

Użyjemy klauzuli ON CONFLICT, aby uniknąć zapytania INSERT, które powoduje ten błąd z powodu wstawienia zduplikowanych rekordów. Polecenie ON CONFLICT zawiera dwie frazy o różnych zastosowaniach.

Przykład 3: Upsert z klauzulą ​​NIE RÓB NIC

W tym przykładzie przyjrzymy się klauzuli NIE RÓB NIC. Ta klauzula określa, że ​​żadna operacja nie zostanie wykonana w przypadku błędu lub konfliktu. Innymi słowy, ta klauzula pozwoli tylko uniknąć konfliktów lub błędów.

Wypróbujmy więc to samo polecenie INSERT, którego użyliśmy wcześniej do dodawania zduplikowanych rekordów do tabeli „osoba”, z dołączonymi kilkoma zmianami. Dodaliśmy klauzulę ON CONFLICT wraz z oświadczeniem DO NIC w tej klauzuli. Klauzula ON CONFLICT została zastosowana do unikalnej kolumny „id”. Oznacza to, że gdy użytkownik spróbuje wstawić zduplikowaną wartość do kolumny „id”, uniknie konfliktu i nic nie zrobi. Jak widać na poniższym obrazku, nie wstawi nawet nowego rekordu do tabeli ani nie zaktualizuje poprzedniego rekordu.

>> WSTAWIĆ osobę (id, imię, wiek, miasto, kraj) WARTOŚCI ( '3', 'Habib', '45', 'Cakwal', 'Pakistan') W KONFLIKCIE (id) NIC;

Sprawdźmy jeszcze raz tabelę „osoby” ze względu na autentyczność. Jak widać na poniższym obrazku, w tabeli nie wprowadzono żadnych zmian.

>> WYBIERZ * OD osoby;

Przykład 2: Upsert z klauzulą ​​DO

Następnie przyjrzymy się klauzulom ON CONFLICT i DO. Jak sama nazwa wskazuje, klauzula ___ wykona akcję w przypadku błędu lub konfliktu, gdy do tabeli zostanie wstawiona zduplikowana wartość. Użyjemy tego samego polecenia wstawiania, którego użyliśmy wcześniej do wstawienia zduplikowanego rekordu w tabeli „osoba”, z niewielką zmianą. Dodaliśmy klauzulę ON CONFLICT z klauzulą ​​DO wewnątrz niej. Gdy użytkownik spróbuje wstawić nieunikalną wartość do kolumny „id”, wykona akcję, aby uniknąć konfliktu. Używamy klauzuli UPDATE po klauzuli DO, która wskazuje na aktualizację danych w tabeli „osoba”. Słowo kluczowe SET służy do ustawienia wartości kolumny „name” na nową wartość „Habib”, przy użyciu słowa kluczowego EXCLUDED, gdzie „id” wynosi „3” w bieżącym czasie. Jeśli wykonasz następujące zapytanie, zobaczysz, że zapytanie zostało wykonane.

>> WSTAWIĆ osobę (id, imię, wiek, miasto, kraj) WARTOŚCI ( '3', 'Habib', '45', 'Cakwal', 'Pakistan') W KONFLIKCIE (id) AKTUALIZUJ USTAW imię = WYKLUCZONE.Nazwa;

Aby zobaczyć zmiany w powyższym zapytaniu, należy pobrać rekordy z tabeli „osoba”. Jeśli wykonasz następujące zapytanie w powłoce wiersza poleceń, powinieneś zobaczyć kolejne wyjście:.

>> WYBIERZ * OD osoby;

Jak widać z poniższych danych wyjściowych, imię i nazwisko osoby zostało zaktualizowane do „Habib”, gdzie „id” to „3.'

Możesz również zaktualizować rekordy w więcej niż jednej kolumnie, używając słowa kluczowego EXCLUDED w klauzuli ON CONFLICT zapytania INSERT, jak pokazano poniżej.

>> WSTAWIĆ DO osoby (id, imię, wiek, miasto, kraj) WARTOŚCI ( '3', 'Habib', '45', 'Cakwal', 'Pakistan') W KONFLIKCIE (id) AKTUALIZUJ USTAW imię = WYKLUCZONE.nazwa, miasto = WYKLUCZONE.Miasto;

Zmiany są pokazane poniżej.

>> WYBIERZ * OD osoby;

Wniosek

W tym artykule pokazano, jak używać PostgreSQL 'Upsert' z klauzulą ​​ON CONFLICT, wraz z akcjami DO i DO NIC. Mamy nadzieję, że po przeczytaniu tego artykułu łatwiej będzie Ci zrozumieć, jak używać PostgreSQL 'Upsert.'

Gry Najlepsze gry w laboratorium aplikacji Oculus
Najlepsze gry w laboratorium aplikacji Oculus
Jeśli jesteś posiadaczem gogli Oculus, musisz wiedzieć o sideloadingu. Sideloading to proces instalowania w zestawie nagłownym treści innych niż sklep...
Gry Top 10 Games to Play on Ubuntu
Top 10 Games to Play on Ubuntu
Windows platform has been one of the dominating platforms for gaming because of the huge percentage of games that are developing today to natively sup...
Gry 5 najlepszych gier zręcznościowych dla systemu Linux
5 najlepszych gier zręcznościowych dla systemu Linux
W dzisiejszych czasach komputery to poważne maszyny używane do gier. Jeśli nie możesz uzyskać nowego wysokiego wyniku, będziesz wiedział, o co mi chod...