1

Temat: Automat w PostgreSQL

Witam.
Zastanawiam się od jakiegoś czasu czy da się zrobić bezpośrednio w postgresie taką funkcję, która przy próbie zmiany danych w tabeli odczyta mi w podobnym zapytaniu (SELECT zal FROM tabela where id=1) wartość zal i jeśli użytkownik przekroczy tą wartość o 1 załóżmy z 2 na 3 to postgres krzyknie błąd że przekroczono wartość (3) i cofnie jej wartość do (2).

Ma to dla mnie znaczenie gdyż tworzę program i chcę zaimplementować w nim licencję na określona liczbę stanowisk.

załóżmy:
Logujący użytkownik nie będzie wpuszczony do programu jeśli wartość "ZAL" (patrz wyżej w zapytaniu) przekroczy dostępna ilość zalogowanych w jednym czasie użytkowników. Np ktoś kupi licencję na dwa stanowiska a osób pracujących będzie 10 z tymże dwóch jednocześnie i nie więcej.

Chciałbym aby coś takiego wykonać w samym postgresie np na funkcjach wyzwalaczach itp. niestety czekam na książkę o postgresie a moja wiedza jeszcze nie ogarnęła tych całych funkcji i wyzwalaczy.

2

Odp: Automat w PostgreSQL

A nie mozesz nalozyc check'a na kolumne, musisz miec jakis komunikat w stylu 'przekroczono dopauszcz. liczbe uzytk.'?
Jak chcesz funkcje czy triggera to musisz sie precyzyjnej wyrazic (najlepiej przedstaw peoblem na jakims konkretnym przykladzie - podaj strukture tabel)

3

Odp: Automat w PostgreSQL

wolałbym triggera niż check'a

tabela wygląda tak:
--------------------------------------------------------------------------
| id bigserial | lic varchar(128) | zal bigint | modul varchar(64) |
--------------------------------------------------------------------------
|               1 | HASH LICENCJI | il zalogo. | moduł programu    |
--------------------------------------------------------------------------

i chciałbym aby trigger sprawdzał licencje (wyciągał z niej ilość użytkowników pracujących na raz) --> Następnie porównał z liczbą zalogowanych "zal" i odrzucił lub zatwierdził w danym module programu.