5

Chcę dodać sprawdzanie poprawności na poziomie pola w tabeli. Istnieje pole o nazwie "numer_konta", a to pole powinno zawsze zawierać test "luhn". Znalazłem funkcję o nazwie "luhn_verify", która wydaje się działać poprawnie (google dla niej, jeśli jesteś zainteresowany). Zwraca wartość logiczną. Moje pytanie brzmi:Ograniczenie sprawdzania kontra sprawdzenia

Czy w PostgreSQL istnieją jakieś znaczące zalety wydajnościowe w przypadku użycia wyzwalacza dla tego sprawdzania poprawności a ograniczenia sprawdzającego.

Dodatkowe informacje:

  • PostgreSQL 9.1
  • Tabela nie posiada obecnie wyzwalacz insert, ale ma aktualizacji.

prawne:

czuję się tak prawdopodobnie już odpowiedział, ale nie wydaje się znaleźć wyraźną odpowiedź. Jeśli tak, zaznacz jako duplikat i podaj oryginalne pytanie/odpowiedź.

Może to być lepsze pytanie dla płyty głównej.

+0

Nie oczekuję żadnej znaczącej różnicy. Testowanie jest trywialne i zawsze dobrze jest przetestować w swoim dokładnym otoczeniu. – maniek

Odpowiedz

8

Reguła polega na użyciu ograniczenia CHECK przed uruchomieniem wyzwalaczy.

A CHECK constraint jest szybszy, prostszy, bardziej przenośny, potrzebuje mniej kodu i jest mniej podatny na błędy. Na przykład wyzwalacze mogą być łatwo ominięte przez inne wyzwalacze.

Triggers are much more complicated. Używaj ich, gdy masz do, dla bardziej złożonych wymagań.

Jeśli ograniczenie dla CHECK jest zbyt restrykcyjne dla twojego przypadku lub powoduje problemy z ponownym załadowaniem zrzutu, możesz użyć modyfikatora NOT VALID jako pośredniego (pg 9.2+). Szczegóły:

+0

@Erwin, co Twoim zdaniem jest ładunkiem, aby mieć, czy nie, ograniczenie kontroli, jak nie jest puste, w PostgreSQL 9.x? –

+0

@ErwinBrandstetter zawsze w porządku! http://stackoverflow.com/questions/19137811/how-much-cost-check-constraints-in-postgres-9-x –

+1

@Erwin na moim doświadczeniu Postgres traktuje ograniczenia kontroli i uruchamia inaczej, gdy przywraca bazę danych, a mianowicie wyzwalacze mogą być ignorowane, ale ograniczenia sprawdzania nie mogą być, więc w zależności od ograniczenia można napotkać bardziej skomplikowane przywracanie przy użyciu ograniczeń sprawdzania. – rapvelopment

Powiązane problemy