Descrizione del difetto
Non era possibile importare una tabella di database se uno dei campi era definito come obbligatorio ma con valore di default uguale a stringa vuota. Il malfunzionamento si manifestava se si utilizzavano i database MySql, Access, SQLite e SQLServer.
Nelle versioni precedenti di Instant Developer se si importava una tabella contenente un campo NOT NULL con default uguale a stringa vuota:
- su DB2 UDB il campo veniva dichiarato come avente un valore di default uguale a " " (spazio)
- su Postgres e Oracle il campo veniva dichiarato Opzionale senza valore di default
- su MySql, Access, SQLite e SQLServer il campo veniva dichiarato obbligatorio senza valore di default
Nel caso 2 il campo risultava opzionale a run-time e, se non veniva inserito, il sistema utilizzava il valore NULL durante l'inserimento di un nuovo record (o documento qualora si utilizzasse la DO). Tale operazione generava un errore durante l'inserimento poiché il campo su database era NOT NULL.
Nel caso 3 l'utente era obbligato a specificare un valore per il campo e non poteva "lasciarlo vuoto".
A partire dalla versione 11.5 In.de si comporta per tutti i database come indicato sopra nel caso 1, ovvero inserisce il valore " " come valore predefinito del campo per poi dichiarare a run-time il valore "" (stringa vuota). Tale operazione viene effettuata anche durante la creazione del database, pertanto ora è possibile creare campi di database con valore predefinito "".
Effetti del malfunzionamento
- Se si importava un database contenente tabelle con campi con valore di default uguale a "" (stringa vuota) il campo risultava obbligatorio e occorreva specificarne il valore a run-time.
Soluzioni
Non sono disponibili workaround per le versioni precedenti.
Funzionalità interessate
L'importazione e l'uso di tabelle di database contenenti campi con default "".
Note
-
Attenzione: Su database ORACLE non è possibile utilizzare il valore di default uguale a "" (stringa vuota). Infatti se si crea una tabella,
create table TABLE ( ID number(4) not null, NOME varchar2(30) not null, COGNOME varchar2(30) default '' not null )e si prova ad inserire un record utilizzando l'istruzione SQLinsert into TABLE (ID, NOME) values (1, 'Luca')
Oracle genera l'erroreORA-01400: cannot insert NULL into ("TEST"."TABLE"."COGNOME")Questo problema non si manifesta se il valore di default è diverso da "".
Ultima modifica: 09/10/2012 / Validità: da 11.5.5000
stringa vuota