Wymuszenie prawidłowej numeracji dokumentów (trigger)

0

Witam.

Jest sobie następujące tabela w bazie danych, przechowująca nagłówki dokumentów (faktur) (tylko interesujące nas w tym momencie pola):

DOKUMENTY

ID_dokumentu
Numer_dokumentu
Data_dokumentu

Wszystkie pola są liczbami całkowitymi - data jest przechowywana jako kolejny numer dnia (nie wiem, czemu akurat w ten sposób, ale to nieistotne).
ID_dokumentu to klucz główny tabeli.
Numer_dokumentu to numer, który drukuje się w nagłówku faktury.

W tym momencie możliwe jest zupełnie dowolne i niezależne od siebie ustawienie pól Numer_dokumentu i Data_dokumentu, co bardzo się nie podoba księgowej.

Muszę napisać trigger na insert/update tabeli, który podnosi błąd w sytuacji, gdy kolejność dokumentów posortowanych po numerze nie zgadza się z kolejnością dokumentów posortowanych po dacie - na przykład następujący stan jest poprawny:

Numer Data
121 200
122 201
123 201
124 201
125 202

A poniższy błędny (powinien wyrzucić błąd przy tworzeniu jednego z dokumentów)

Numer Data
121 200
122 201
123 203
124 201
125 202

Mam nadzieję, że opisałem problem w miarę jasno.
Czy ktoś może mi podpowiedzieć, jak się za to zabrać?

0
  1. unique na numer i na data
  2. jeśli wstawiany_numer <= max(numer) to error
  3. jeśli wstawiana_data <= max(data) to error
    a jak mają być kolejne to zamiast <= max to <> max + 1
0
Misiekd napisał(a):
  1. unique na numer i na data
  2. jeśli wstawiany_numer <= max(numer) to error
  3. jeśli wstawiana_data <= max(data) to error
    a jak mają być kolejne to zamiast <= max to <> max + 1

Niestety - nie może tak być.

Dokumenty nie zawsze są dopisywane "na koniec" - możliwa jest sytuacja, gdy w numeracji są "dziury" i chcemy je wypełnić - na przykład:

Numer Data
120 100
121 100
122 100
124 102
125 102

W tej sytuacji powinniśmy móc utworzyć:

  1. Dokument o numerze > 125 i dacie >=102
  2. Dokument o numerze 123 i dacie 100, 101 lub 102

Jakieś pomysły?

1

I się okaże, że jakiś klient dostał dwie faktury: nr 123 z dnia 100 i numer 124 z dnia 102. To się chyba nie będzie podobało klientowi, na pewno nie będzie się podobało jego księgowej i urzędowi skarbowemu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1