Buon giorno, avrei bisogno di creare con LO Base una tabella con due campi [INTEGER] ad incremento automatico di cui solo uno che sia una chiave primaria. Quando provo a farlo, anche sul secondo campo mi crea automaticamente la chiave e non trovo la soluzione.
Ne ho bisogno in quanto una volta all'anno dovrei riportare a 1 il valore del secondo campo con l'istruzione SQL ALTER TABLE "T_PROTOCOLLO" ALTER COLUMN "N_PROTOCOLLO" RESTART WITH 1
Al primo campo essendo una chiave primaria al quale sono collegate altre tabelle, non posso farlo e in oltre il Data Base non mi permetterebbe di avere due o più valori identici nella stessa chiave.
Il tutto dovrà gestire il protocollo della posta in entrata e in uscita. Ho dovuto creare un DB in quanto non ho trovato nessun programma per Linux Mint a 64 bit (nemmeno a pagamento).
Quindi, come potrei risolvere la questione dei due campi incrementali? Oppure, avete un programma da consigliarmi?
Ciao e grazie
andrea
Allora prima di tutto il tuo secondo valore [INTEGER] non deve essere definito auto-incrementante siccome ci può essere solo una colonna tale (in gergo DB sarebbe una colonna IDENTITY cioè di identità = identificazione).
Dunque occorre individuare un'alternativa come quella di usare le sequenze. Però anche usando loro non ci arrivi.
Eseguendo le seguenti due istruzioni SQL dall'interprete (nel menu "Extra"):
create sequence SeqSecondaColonna; create table TabellaTest(col1 integer identity primary key, col2 integer generated by default as sequence SeqSecondaColonna not null)
La seconda non va a buon fine perché HSQLDB (motore di LibreOffice Base) apparentemente supporta solo una colonna generate oppure colonne d'identità per tabella (http://hsqldb.org/doc/2.0/guide/databaseobjects-chapt.html):
The |<identity column specification>| or |<identity column sequence specification>| can be specified for only a single column of the table.
Secondo me restando su questo schema non rimane altro che usare i trigger. Un concetto che poi non è banalissimo...
Matthias
Andrea Congiu wrote:
Buon giorno, avrei bisogno di creare con LO Base una tabella con due campi [INTEGER] ad incremento automatico di cui solo uno che sia una chiave primaria. Quando provo a farlo, anche sul secondo campo mi crea automaticamente la chiave e non trovo la soluzione.
Ne ho bisogno in quanto una volta all'anno dovrei riportare a 1 il valore del secondo campo con l'istruzione SQL ALTER TABLE "T_PROTOCOLLO" ALTER COLUMN "N_PROTOCOLLO" RESTART WITH 1
Al primo campo essendo una chiave primaria al quale sono collegate altre tabelle, non posso farlo e in oltre il Data Base non mi permetterebbe di avere due o più valori identici nella stessa chiave.
Il tutto dovrà gestire il protocollo della posta in entrata e in uscita. Ho dovuto creare un DB in quanto non ho trovato nessun programma per Linux Mint a 64 bit (nemmeno a pagamento).
Quindi, come potrei risolvere la questione dei due campi incrementali? Oppure, avete un programma da consigliarmi?
Ciao e grazie
andrea
[Clicca per aprire il sito] https://www.andrea-congiu.it/wiki/doku.php GnuPG - ID chiave pubblica: D3E105A5855121BB ID diaspora* - congiu_andr@diasp.org SIP - congiu.andr@ekiga.net URL - https://www.andrea-congiu.it https://www.andrea-congiu.it/wiki/doku.php