Campo Not null a condizione

gp75

Nuovo Utente
7 Gen 2020
7
0
1
Buonasera ho un db di anagrafica tra i vari campi ci sono:
"PersonaFisica" con indicazione SI/NO
"Cognome" Null
"Nome" Null
Vorrei che se nel campo PersonaFisica fosse presente SI i campi Cognome e Nome diventassero obbligatori, da applicazione che si collega al database ci riesco tramite codice di programmazione che si attiva nella maschera di inserimento dati, ma preferirei risolvere a monte, esiste un altro modo ?
Grazie
 

macus_adi

Utente Attivo
5 Dic 2017
1.141
65
48
IT/SW
ma preferirei risolvere a monte, esiste un altro modo ?
Se i dati ancora non sono presenti nel DB come fai a rendere obbligatori i fields? Giusto per curiosità....

I vincoli si applicano con una base dati esistenti, no su dati potenziali (a livello di DBMS).
 

gp75

Nuovo Utente
7 Gen 2020
7
0
1
Ho risolto inserendo il seguente vincolo
SQL:
ALTER TABLE clienti
ADD CHECK (IF(PERSONAFISICA = 'SI',  LENGTH(NOME_C) > 1, LENGTH(NOME_C) = 0));
Grazie
 

gp75

Nuovo Utente
7 Gen 2020
7
0
1
Ciao, puoi spiegarti meglio? anche se credo che continuerò ad effettuare la verifica direttamente dalla maschera da dove inserisco i dati, dove una msgbox mi avvisa dell'errore non facendomi proseguire e settando il focus sul campo da compilare.
 

macus_adi

Utente Attivo
5 Dic 2017
1.141
65
48
IT/SW
Vorrei che se nel campo PersonaFisica fosse presente SI i campi Cognome e Nome diventassero obbligatori
vincoli si applicano con una base dati esistenti, no su dati potenziali
Ciao, puoi spiegarti meglio?
Quello che hai scritto non obbliga minimamente l'inserimento del nome e del cognome, in quanto agisce sull'insert/update del DB, ed appunto il tuo vincolo agisce in modo silente nell'inserimento del record, senza dare nessun feedback al Client.

L'alter table che hai scritto, serve a tutt'altro, a completare dei dati nel database con valori booleani e/o calcoli, non a imporre l'inserimento un determinato field...

Parli di maschera, ma non siamo su access...

Se avessi detto "access" concordo con te, in quanto è possibile recuperare tali eccezioni e compilare a dovere il tutto, ma con mysql NO.

Ammettendo la correttezza di ciò che hai fatto... Hai controllato tramite un "try" che l'inserimento viene effettuato, e nel caso di mancato inserimento recuperi e gestisci l'errore?
Se la risposta è no, fallo da codice!
 

gp75

Nuovo Utente
7 Gen 2020
7
0
1
Non mi obbliga all'inserimento del cognome e del nome ma non viene effettuato l'insert, non parlo di access ma di libreoffice connesso ad un db mysql(su lb si chiamano formulari e non maschere) e si riesce a recuperare le eccezioni e ad intervenire.
 

gp75

Nuovo Utente
7 Gen 2020
7
0
1
mi scuso io per non aver esposto in maniera completa il quesito.
Grazie per l'attenzione.