Dlaczego mielibyśmy tworzyć sekwencje, nawet jeśli istnieje klucz podstawowy?Co to jest sekwencja (baza danych)? Kiedy będziemy go potrzebować?
Odpowiedz
Klucz podstawowy jest kolumną w tabeli.
Klucz podstawowy potrzebuje unikatowej wartości, która musi skądś pochodzić.
Sekwencja jest cechą niektórych produktów bazodanowych, które po prostu tworzą niepowtarzalne wartości. Po prostu zwiększa wartość i zwraca ją. Szczególną rzeczą jest to, że: nie ma izolacji transakcji, więc kilka transakcji nie może uzyskać tej samej wartości, inkrementacja również nie jest wycofywana. Bez sekwencji baz danych bardzo trudno jest wygenerować unikalne liczby zwiększające.
Inne produkty bazodanowe obsługują kolumny inicjowane automatycznie z rosnącym numerem.
Istnieją inne sposoby tworzenia niepowtarzalnych wartości dla kluczy podstawowych, na przykład Guids.
Sekwencja pozwala wypełnić klucz podstawowy unikalną, serializowaną liczbą.
To różni się od serial
lub auto_incremement
klucza podstawowego w tym sensie, że:
Jest to rzeczywisty obiekt bazy danych (trzeba ją stworzyć):
sql> create sequence NAME_OF_YOUR_SEQUENCE;
You może przypisać niezależne uprawnienia do różnych użytkowników bazy danych:
sql> grant select on NAME_OF_YOUR_SEQUENCE to NAME_OF_YOUR_USER;
Możesz użyć unikalnego numeru, który różni się pomiędzy kilkoma tabelami (nie tylko jednym). Powiedzmy, że masz cztery tabele z numerycznymi kluczami podstawowymi i chcesz unikalne numery wśród tych czterech tabel. Możesz użyć do tego sekwencji, nie martwiąc się o implementowanie mechanizmów blokujących, aby zrobić to "ręcznie".
Można zmienić swój numer do dowolnej wartości chcesz z
alter sequence
Można przechodzić swoich numerów
sql> create sequence NAME_OF_YOUR_SEQUENCE maxvalue 1500 cycle;
A więc w jaki sposób sekwencja różni się od klucza kluczowego auto_increment? A może to właściwie sekwencja? – Blaise
Sprawdź moją zaktualizowaną odpowiedź @Blaise –
Klucz podstawowy jest (z technicznego punktu widzenia) jedynie indeksem wymuszającym unikatowość (a także szybkość wykonywania zapytań). Jest tam pewna informacja semantyczna, która jest "kluczem" dla istoty, którą opisuje ten wiersz, ale to wszystko.
Sekwencja to zupełnie inna jednostka; istnieje odrębnie od tabel (podobnie jak procedura składowana) i można go wywołać w celu uzyskania kolejnych liczb.
Te dwa elementy są często używane razem w celu wygenerowania automatycznych kluczy podstawowych dla elementów, które nie mają sensownych kluczy "rodzimych". Ale są to dwa oddzielne pojęcia; możesz mieć tabele, w których klucz podstawowy jest jawnie zapełniany podczas wstawiania, i możesz mieć sekwencje, które są używane do wypełniania kolumn innych niż PK (lub nawet używane w sposób imperatywny podczas procedury przechowywanej, w odróżnieniu od wstawiania rekordów).
- 1. Co to jest baza kanapy
- 2. Co to jest bajt datatype i kiedy powinienem go użyć?
- 3. co to jest Request.InputStream i kiedy go użyć?
- 4. Co to jest indeks pełnotekstowy i kiedy powinienem go używać?
- 5. Co to jest Manifest w Scali i kiedy go potrzebujesz?
- 6. Co to jest SAPI i kiedy go użyjesz?
- 7. Co to jest __declspec i kiedy należy go użyć?
- 8. Co to jest Ninject i kiedy go używasz?
- 9. Kiedy będziemy używać applicationContext.xml na wiosnę?
- 10. Co to jest err. (* Os.PathError) w Go?
- 11. OperationalError: Baza danych jest zablokowana
- 12. Baza danych dokumentów ArangoDB, a także baza danych wykresów? Jak to jest możliwe?
- 13. Czy będziemy potrzebować resetowania CSS, jeśli nie rozważymy żadnej wersji IE (Internet explorer)?
- 14. Co to jest IllegalStateException?
- 15. MySQL Workbench - Czy schemat jest tym samym co baza danych?
- 16. TF30042: Baza danych jest pełna
- 17. Co to jest Jython i czy w ogóle jest przydatne?
- 18. Co to jest metoda Javascript CollectGarbage()? Kiedy i dlaczego powinno się go używać?
- 19. Co to jest "zadanie" (proces potomny) w systemie Windows i kiedy go używać?
- 20. Co to jest std :: decay i kiedy powinno się go używać?
- 21. Co to jest typ złożony w strukturze encji i kiedy go używać?
- 22. Co to jest usługa serwisowa i kiedy jej potrzebuję?
- 23. SlickGrid, co to jest widok danych?
- 24. Co to jest struktura danych wektorowych
- 25. Co to jest mocno typowany zbiór danych?
- 26. co to jest liczność w bazach danych?
- 27. Co to jest powiązanie danych deklaratywnych?
- 28. Co to jest []
- 29. Baza danych - wersja danych
- 30. Jak niezawodna jest baza danych h2?
Jeśli nie ma izolacji transakcji, to w jaki sposób można jej użyć? – rapt
Nie ma izolacji transakcji dla generowania identyfikatorów. Zawsze zwraca następną wartość sekwencji. Izolacja transakcji oznaczałaby, że transakcja równoległa albo uzyskałaby tę samą wartość, albo trzeba czekać, aż druga transakcja się zatwierdzi, zanim będzie mogła uzyskać następną wartość. Nie jest to wymagane ani użyteczne. –