1

Temat: Wyzwalacz na prostej tabeli

Hej.
Mam problem z konstrukcją wyzwalacza w postgresie (w mysql i ms sql server skladnia jest duuuzo inna ;( )
A mianowicie mam taka prosta tabele:
CREATE TABLE osoba
(id_osoba INTEGER PRIMARY KEY,
imie VARCHAR,
nazwisko VARCHAR,
wiek INT,
data_ur DATE,
pensja MONEY)

Chciałbym stworzyć wyzwalacz, który będzie przed INSERT lub UPDATE sprawdzał czy pole "wiek" jest >=16. Jeśli tak to żeby zapytanie zostało wykonane, jeśli nie to żeby wywalił jakiś błąd.

Składania postgresa jednak mnie przerasta rzeczy typu NEW.XX OLD.XX są dla mnie obce. POMOCY!

2

Odp: Wyzwalacz na prostej tabeli

nie potrzeba Ci wyzwalacza możesz to zrobić na dwa sposoby
1 sposób
CREATE TABLE osoba
(id_osoba serial PRIMARY KEY,
imie VARCHAR(50),
nazwisko VARCHAR(50),
wiek INT check (wiek>=16),
data_ur DATE
pensja MONEY);

2 sposób polega na tym , że skoro masz mieć date urodzenia to po co przechowywać wiek skoro można go wyliczyć

CREATE TABLE osoba
(id_osoba serial PRIMARY KEY,
imie VARCHAR(50),
nazwisko VARCHAR(50),
data_ur DATE check (current_date::timestamp-data_ur>=interval '16 year'),
pensja MONEY)

PS zastanów się nad używaniem typu money - czy aplikacja czołowa będzie rozumiała taki tym?

3

Odp: Wyzwalacz na prostej tabeli

Dzięki za pomoc. Ogólnie aplikacja miała tworzyć na sztywno przygotowane wyzwalacze, tabele, dodawac rekordy itp. Typ money był typem obowiązkowym.
Ale już sobie ze wszystkim poradziłem.
Dzięki za pomoc.
Pozdrawiam.

4

Odp: Wyzwalacz na prostej tabeli