Tabela nr_1 :
CREATE TABLE klienci
(
nr_klienta numeric(9) NOT NULL,
adres1 character varying(35),
adres2 character varying(35),
nazwa1 character varying(35),
nazwa2 character varying(35),
nr_telefonu numeric(12),
pesel1 numeric(11),
pesel2 numeric(11),
nr_dowodu1 character varying(9),
nr_dowodu2 character varying(9),
nip1 numeric(10),
nip2 numeric(10),
firma boolean DEFAULT false,
CONSTRAINT kilenci_pk PRIMARY KEY (nr_klienta)
)
Tabela nr_2 :
CREATE TABLE umowy
(
nr_umowy serial NOT NULL,
usluga character varying(3) NOT NULL,
nr_pakietu integer NOT NULL,
charakt character varying(1) NOT NULL,
budynek numeric(5) NOT NULL,
mieszk numeric(3) NOT NULL,
a character(1),
nr_klienta numeric(9) NOT NULL,
data_podpisania date NOT NULL DEFAULT '1000-02-15'::date,
data_zakonczenia date,
data_podlaczenia date,
data_zawieszenia date,
data_odwieszenia date,
czasowa boolean NOT NULL DEFAULT false,
rabat numeric(3,2) DEFAULT 0,
uwagi text,
pc_mac character varying(17),
oplata numeric(8,2) DEFAULT 0,
CONSTRAINT numer_umowy_pk PRIMARY KEY (nr_umowy),
CONSTRAINT "numer klienta" FOREIGN KEY (nr_klienta)
REFERENCES klienci (nr_klienta) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "numer_pakietu_usługa" FOREIGN KEY (usluga, nr_pakietu)
REFERENCES pakiety (usluga, nr_pakietu) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
Widok :
CREATE OR REPLACE VIEW umowy_klienci AS
SELECT umowy.nr_umowy, umowy.usluga, umowy.nr_pakietu, umowy.charakt, umowy.budynek, umowy.mieszk, umowy.a, umowy.nr_klienta, umowy.oplata, umowy.data_podpisania, umowy.data_zakonczenia, umowy.data_podlaczenia, umowy.data_zawieszenia, umowy.data_odwieszenia, umowy.czasowa, umowy.rabat, umowy.uwagi, umowy.pc_mac, klienci.adres1, klienci.adres2, klienci.nazwa1, klienci.nazwa2, klienci.nr_telefonu, klienci.pesel1, klienci.pesel2, klienci.nr_dowodu1, klienci.nr_dowodu2, klienci.nip1, klienci.nip2, klienci.firma
FROM umowy
JOIN klienci ON umowy.nr_klienta = klienci.nr_klienta;
Wygląda to tak.
Zdefiniowałem sobie taką regułę :
CREATE OR REPLACE RULE umowy_klienci AS
ON UPDATE TO umowy_ceny_klienci_uslugi DO INSTEAD UPDATE umowy SET rabat = new.rabat, oplata = new.oplata idt...
WHERE umowy.nr_umowy = old.nr_umowy;
Ale coś z aplikacji wykracza się (procedurą Query.edit, post, commit), z poziomu SQL działa dobrze.
Tylko z aplikacji drze się i sypie błędami;
Ostatnio edytowany przez Rady (2009-02-10 04:07:57)