[genropy] R: Re: Chiavi primarie

  • From: "gianpiero.fontana@xxxxxxxx" <gianpiero.fontana@xxxxxxxx>
  • To: <genropy@xxxxxxxxxxxxx>
  • Date: Wed, 19 Oct 2016 20:16:20 +0200 (CEST)

Perfetto , ho capito
proverò ad usare pkey_columns

Grazie della risposta
Buna serata




----Messaggio originale----
Da: giovanni.porcari@xxxxxxxxx
Data: 19-ott-2016 19.38
A: <genropy@xxxxxxxxxxxxx>
Ogg: [genropy] Re: Chiavi primarie


Il giorno 19 ott 2016, alle ore 18:39, gianpiero.fontana@xxxxxxxx ha scritto:

Volevo sapere se è fattibile dai modelli genropy creare dei modelli 
postgresql con chiave "multiple primary key"
Massimo mi dice che non è possibile e che bisogna passare sempre per una 
chiave unica.
E' corretto?


Si è no.

Inizialmente era dato un supporto alle chiavi multiple ma lo svantaggio era una 
maggior complessità
sintattica nei casi (99%) in usavamo chiavi primarie singole.

Abbiamo quindi preso la decisione di rimuovere il supporto completo alle chiavi 
multiple
e ripiegare su un compromesso.

Di norma la chiave multipla viene usata per essere certi dell'unicità di un 
record rispetto a più colonne.

La strada da percorrere in questo caso è quella di definire una colonna in più.

Ti riporto ad esempio la tabella 'counter' che nel package adm assicura la 
gestione di tutti i contatori di Genropy:


  def config_db(self, pkg):
        tbl = pkg.table('counter', 
pkey='codekey',pkey_columns='pkg,tbl,code,fld,period', name_long='!!Counter')
        self.sysFields(tbl, id=False, ins=True, upd=True)
        tbl.column('codekey', size=':80', readOnly='y', name_long='!!Codekey', 
indexed='y')
        tbl.column('code', size=':12', readOnly='y', name_long='!!Code')
        tbl.column('pkg', size=':12', readOnly='y', name_long='!!Package')
        tbl.column('tbl', size=':30', readOnly='y', name_long='!!Table')
        tbl.column('fld', size=':30', readOnly='y', name_long='!!Counter Field')
        tbl.column('period',size=':10',name_long='!!Period',indexed='y')
        tbl.column('counter', 'L', name_long='!!Counter')
        tbl.column('last_used', 'D', name_long='!!Last used')
        tbl.column('holes', 'X', name_long='!!Holes')
        tbl.column('errors','X', name_long='!!Errors')

Noterai l'attributo pkey_columns che definisce come viene generata la chiave 
primaria.
Il limite è che le colonne che la compongono devono essere testo o char.

Non so se ti può servire ma in ogni caso fammi sapere se ci sono dubbi


Ciao

G



Other related posts:

  • » [genropy] R: Re: Chiavi primarie - gianpiero.fontana@xxxxxxxx