linux user group brescia

immagine del castello

Archivio della mailing list

R: postgresql foreign key

Giuseppe Corbelli cowo a lugbs.linux.it
Mar 6 Maggio 2003 08:08:56 UTC
On Mon, May 05, 2003 at 10:34:26AM +0200, cartolina wrote:
> 
> >Ho un problema a capire quello che vuoi.
> >non sono riuscito a capire cosa vuoi ottenere. se puoi rispiegarlo,
> 
> pare che il problema l'abbia io: di comunicazione
> intanto grazie, vedro' di spiegarmi meglio:
> ho due tabelle, una che possiamo chiamare clienti_anagrafica e un'altra
> clienti_dettagli_statistici.
> un dato deve esserci in c_anagrafica e puo' non esserci in c_d_statistici.
> non puo' esistere un dato in c_d_statistici che non sia collegato a
> c_anagrafica.
> l'indice principale di c_anagrafica si deve autoincrementare.
L'indice (nella terminologia relativa al mondo dei DB) non ha a che vedere
con quello che intendi tu. Si tratta di un attributo, in particolare della
primary key. Non e' per stracciare i maroni ne' per fare il perfettino. E'
che senno' non ci si capisce.

> a questo viene collegata la tuple di c_d_statistici, che deve essere,
> ovviamente, collegata al cliente.
> ora, questo problema l'ho risolto con
> 
> CREATE TABLE clienti_anagrafica(
> id serial PRIMARY KEY,
> ecc text,
> ecc ecc);
> 
> CREATE TABLE clienti_dettagli_statistici(
> id serial,
> id_anagrafica integer CONSTRAINT idanagrafica
> REFERENCES clienti_anagrafica(id)
> ON UPDATE CASCADE
> ON DELETE CASCADE,
> ecc text,
> ecc ecc);
> 
> ps. sia che io indichi una FOREIGN KEY o no sembra vada uguale. me la mette
> da solo.
A parte che non ho capito che ci sta a fare il CONSTRAINT. Comunque il
concetto di base e' sempre quello, sia che usi il REFERENCES sia il FOREIGN
KEY.

> pgsql mi crea una funzione(?si chiama cosi'?) che auto incrementa il serial
> e un'altra
Sequenza.

> che impedisce l'immissione di un dato che non abbia in id_anagrafica
> l'indice di clienti_anagrafica.
Questa si chiama integrita' referenziale.

> le tabelle effettivamente sono molte di piu', e adesso sto cercando
> strumenti per creare la struttura.
Mi pare che ci sia qualcosa per dia, ma non ci giurerei.

> sto usando come client access, usando tabelle collegate, e l'ultima sfiga,
> adesso, e' che quando inserisco un dato,
> subito appare "#eliminato" su tutta la tuple perche' non inserisco il campo
> id, chiudo la tabella, la riapro
> e i dati li ha presi.
> immagino che questo derivi dal fatto che la funzione agisce dopo
> l'inserimento, o altro che adesso cerco.
> ora provo con un INITIALLY IMMEDIATE, a vedere se va
Di nuovo getto la spugna, qui non ho capito nulla. Probabilmente perche' non
so usare access.

-- 
  	Giuseppe "Cowo" Corbelli ~\/~ My software: http://cowo.yoda2000.net
  -<! The Moment Is Now In All History, The Time Has Arrived And This Is The
  		One Place To Be. !>-
  			Savatage - This Is The Time



Maggiori informazioni sulla lista Lug