PostgreSQL: Przepisanie rekordów z tabeli do niej samej

19-Paź-2022

Powiedzmy, że aplikacja ma tabelę służącą do przechowywania uprawnień o następującej strukturze:

Kolumna RoleId to identyfikator użytkownika (liczba, która wskazuje na nazwę użytkownika przechowywaną prawdopodobnie w innej tabeli).

Kolumna PermissionId to identyfikator uprawnienia (również liczba, która wskazuje na nazwę uprawnienia przechowywaną w innej tabeli).

Chodzi o skopiowanie uprawnień jednego użytkownika, a ponieważ pracujemy na tabelach, to należałoby powiedzieć skopiowanie wybranych rekordów z tej tabeli do tej samej tabeli ale podmieniając wartość w kolumnie RoleId.

Załóżmy, że w tabeli mamy takie oto dane:

Najlepiej jest zacząć od wyświetlenia wierszy do skopiowania. Załóżmy, że kopiuję uprawnienia użytkownika nr 2:

Polecenie, które skopiuje dane to INSERT INTO … SELECT. Jedyna różnica jest taka, że w poleceniu SELECT zasilającym INSERT trzeba podmienić RoleId na nową wartość – dajmy na to na 10 (to jest identyfikator naszego nowego użytkownika):

To polecenie wybierze uprawnienia zdefiniowane dla użytkownika nr 2 i skopiuje rekordy do tej samej tabeli zamieniając RoleId na 10. Po wszystkim można sprawdzić uprawnienia użytkownika nr 10:

Więcej o tym w sekcji 7, lekcja „VIDEO – Przepisywanie rekordów za pomocą INSERT INTO … SELECT” w kursie „PostgreSQL dla początkujących” dostępnym na platformie Udemy. Na stronie:

www.kursyonline24.eu

znajdziesz aktualne kupony zniżkowe na ten kurs. Zapraszam!

Komentarze są wyłączone

Autor: Rafał Kraik