[(My)SQL] Pobieranie identyfikatora nowego rekordu bez wykonywania zapytania INSERT.

Witajcie jeszcze raz. ;] Jak mogliście zauważyć, ostatnio znalazło się na moim blogu kilka wpisów na temat pewnych problemów z językiem SQL, a konkretnie kilku sytuacji brzegowych, w których uzyskanie interesujących nas danych okazało się nietrywialnym zadaniem. Nie inaczej będzie też dzisiaj, jako, że czytając różne materiały w serwisach związanych z programowaniem trafiłem na problem pobierania identyfikatora nowego rekordu bez wykonywania zbędnego zapytania INSERT. Nie namyślając się długo dopisałem ten problem do listy pomysłów, a dzisiaj doczekał się on realizacji. ;] Zapraszam do lektury.

Wstęp.

Żeby zobrazować problem, przyjmijmy przykładową strukturę bazy danych. Załóżmy, że mamy tabelę użytkowników, przykładowo px_users:

[PHP, (My)SQL] Systemy uprawnień na stronach internetowych, część 0×02: Poziomy użytkowników.

Przyznaję bez bicia, że od ostatniego wpisu w tej serii upłynęło [zbyt] wiele czasu, za co ponoszę winę jedynie ja, ponieważ dopisywałem po jedno - dwa zdania co jakiś czas, ale ogólnie post “wisiał” na liście szkiców i “grzał ławkę”, nie mogąc się doprosić o solidne dokończenie i wejście na “boisko” strony głównej niniejszego bloga. W związku z tym postaram się dzisiaj i za tydzień zamieścić ostatnie części, tak, aby można było zamknąć temat. Przy tworzeniu kolejnej tego typu serii będę musiał chyba od razu napisać wszystkie części i po prostu publikować je w pewnych odstępach czasu, bo w tym tempie to kolejny wpis ukazałby się pewnie w listopadzie. ;] Ale do rzeczy: w jednym z poprzednich wpisów omówiliśmy najprostszy system zarządzania uprawnieniami, czyli autoryzację na podstawie flagi dostępu do danej sekcji strony. Dzisiaj rozszerzymy to rozwiązanie pozwalając na większą kontrolę i możliwość konfiguracji miejsc, do których ma dostęp nasz użytkownik.

Na czym to polega?

Opisany wcześniej sposób autoryzacji nie jest optymalny, ponieważ w podstawowej wersji pozwala na podzielenie użytkowników na jedynie dwa typy - tych którzy mają dostęp do treści “ukrytych” i tych, którzy muszą się “obejść smakiem”. Wprowadzanie kolejnych kolumn opisanych jako obszary dostępu także nie zdaje egzaminu - przy rozrastającym się systemie musielibyśmy stworzyć tabelę posiadającą kilkadziesiąt, jeśli nie kilkaset kolumn w stylu “allow_[nazwa obszaru]“. Tutaj z pomocą przychodzi nowy pomysł - poziomy użytkowników.