|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: May 2001
Città: Crema-Lodi-Milano
Messaggi: 72
|
SQL info su NOT NULL
in una tabella, ho un campo cognome e un campo nome.
Se fosse obbligatorio inserirli entrambi, si metterebbe NOT NULL ad entrambi questi campi. Ma io ho bisogno che l'utente inserisca ALMENO 1 dei 2 campi. Come si esprime questo vincolo in SQL???? Grazie a tutti |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
In fase di creazione della tabella e definizione dei campi? Non penso proprio si possa fare... Lo controllerai via codice.
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Aug 2001
Città: Gerenzano
Messaggi: 129
|
Al massimo puoi creare un TRIGGER di UPDATE (PL/SQL) che verifichi la tua condizione...
... Non ne ho mai creati, ma credo che si possa fare in questo modo... GO CREATE TRIGGER Prova ON Tabella FOR INSERT, UPDATE AS RAISERROR ('Devi specificare almeno uno dei 2 campi!', 16, 1) ROLLBACK TRANSACTION IF Campo1 is Null AND Campo2 is Null GO
__________________
E' quasi tutto relativo! |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
skorpius: ma per quale DBMS ti serve ?
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: May 2001
Città: Crema-Lodi-Milano
Messaggi: 72
|
è una tabella che fa riferimento ad una anagrafica di clienti...
In una tabella aziende ho ragione sociale, indirizzo ecc.. ognuna di queste può avere 0,1,n contatti (persone che ci lavorano) ciascuna con suo n. di tel. diretto, cellulare, email ecc.. solo che i dipendenti (che useranno questa appilcazione) quando chiedono con chi hanno parlato spesso hanno il cognome, altre volte il nome, quasi mai entrambi..tutto qui. |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sì, ma per quale DBMS ?!?!?! Access, MySQL Oracle, DB2 e chi + ne ha + ne metta... SQL non è uguale per tutti
![]() |
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: May 2001
Città: Crema-Lodi-Milano
Messaggi: 72
|
hai ragione... è Mysql 4.0.15 std!
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quindi i trigger non ci sono
![]() |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Una soluzione molto semplice sarebbe quella di inserire Nome e Cognome nello stesso campo NOT NULL... Tanto bene o male non puoi ordinare neinte su quei campi...al amssimo puoi fare un ordinamento su entrambi i campi mai il risultato sarebbe equivalente a quello fatto su un unico campo...
Inoltre ti si semplificherebbe la ricerca... |
![]() |
![]() |
![]() |
#10 |
Member
Iscritto dal: May 2001
Città: Crema-Lodi-Milano
Messaggi: 72
|
E' vero, Cionci, nel mio caso è proprio meglio fare come dici tu.
![]() Ma cmq, in generale e a puro titolo di curiosità, SQL non consente quello che avevo pensato, allora... |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Diciamo che MySQL ancora non consente quello... Oracle e tanti altri lo consentono...
Sinceramente non so se è consetito dall'ultimo standard SQL... |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:26.