<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - Widok i aktualizacja rekordów]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=133&amp;type=atom"/>
	<updated>2009-02-11T23:35:45Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=133</id>
		<entry>
			<title type="html"><![CDATA[Odp: Widok i aktualizacja rekordów]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=540#p540"/>
			<content type="html"><![CDATA[Komunikat że pole "a" (to jedno z pól widoku) jest wymagane a nie podane;]]></content>
			<author>
				<name><![CDATA[Rady]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=6</uri>
			</author>
			<updated>2009-02-11T23:35:45Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=540#p540</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Widok i aktualizacja rekordów]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=539#p539"/>
			<content type="html"><![CDATA[W takim razie to problem aplikacji. Jakis konkretny komunikat bledu?]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2009-02-10T16:22:27Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=539#p539</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Widok i aktualizacja rekordów]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=538#p538"/>
			<content type="html"><![CDATA[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;]]></content>
			<author>
				<name><![CDATA[Rady]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=6</uri>
			</author>
			<updated>2009-02-10T02:04:49Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=538#p538</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Widok i aktualizacja rekordów]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=537#p537"/>
			<content type="html"><![CDATA[Jak podasz strukture tabel i definicje widoku to sprobujemy cos wykombinowac ;)]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2009-02-09T18:56:11Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=537#p537</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Widok i aktualizacja rekordów]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=536#p536"/>
			<content type="html"><![CDATA[Dokładnie tak :) Ale nie wiem jak napisać taki INSTEAD OF, nie mogę nigdzie znaleźć żadnego przykładu proszę o jakąś podpowiedź. Pozdrawiam]]></content>
			<author>
				<name><![CDATA[Rady]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=6</uri>
			</author>
			<updated>2009-02-09T14:04:00Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=536#p536</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Widok i aktualizacja rekordów]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=491#p491"/>
			<content type="html"><![CDATA[Jesli rozumiem chcesz wstawiac dane do grida, ktory powstal z widoku i maja ci sie aktualizowac tabele, z ktorych powstal widok.
To moze wystarczy jakas regula INSTEAD OF na widoku.]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2009-02-01T14:34:51Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=491#p491</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Widok i aktualizacja rekordów]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=490#p490"/>
			<content type="html"><![CDATA[Znaczy nie chodzi mi o aktualizację samego widoku źle to określiłem, może inaczej : czy można za pomocą jakiegoś trigeru zaktualizować dane za widokiem tzn : w aplikacji wyświetlam widok zamiast tabeli w gridzie napisałem kilka fajnych prcedurek aktualizujących wybrane pole z grida, a problem jest właśnie z widokiem przy wydaniu na  Query z  połaczonym z Gridem polecenia UPDATE, jak zrobić żeby zostały zaktualizowane odpowiednie dane  ukryte za widokiem jakiś triger do tego ?? W aplikacji napisałem ukrytą aktualizacje ale niestety gdy odświrze widok po aktualizacji  kursor grida wraca na początek danych, gdy robie bezpośrednio aktualizacje na tabeli nie ma takich jaj.]]></content>
			<author>
				<name><![CDATA[Rady]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=6</uri>
			</author>
			<updated>2009-02-01T13:59:11Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=490#p490</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Widok i aktualizacja rekordów]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=489#p489"/>
			<content type="html"><![CDATA[???
Zaktualizować widok? Widok jest tworem, który jest niczym innym jak SELECT'em przechowywanym w bazie, nie ma potrzeby aktualizowania go, bo aktualizuje sie sam (chyba ze cos sie zmienilo w tej kwestii)]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2009-02-01T12:20:50Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=489#p489</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Widok i aktualizacja rekordów]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=487#p487"/>
			<content type="html"><![CDATA[Witam Panowie mam pytanie czy można zaktualiozować widok zbudowany z dwuch tabel połaczonych JOIN-em jesli tak w jaki sposób to zrobić czy trzeba pisać triger na każde pole widoku ??]]></content>
			<author>
				<name><![CDATA[Rady]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=6</uri>
			</author>
			<updated>2009-02-01T11:17:17Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=487#p487</id>
		</entry>
</feed>
