English
Instant Developer Foundation Documentazione
  • Note di rilascio
  • Instant Developer Foundation
  • Versioni precedenti
  • Versione 11.5.5000
  • Correzioni

DBA: Campi con default ""

stringa vuota copia link

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:

  1. su DB2 UDB il campo veniva dichiarato come avente un valore di default uguale a " " (spazio)
  2. su Postgres e Oracle il campo veniva dichiarato Opzionale senza valore di default
  3. su MySql, Access, SQLite e SQLServer il campo veniva dichiarato obbligatorio senza valore di default
Nel caso 1 In.de dichiarava a run-time il campo come avente valore di default "" (stringa vuota). In questo caso il sistema si comportava correttamente valorizzando il campo, o la proprietà del documento qualora si utilizzasse il framework DO, al valore "" se questo non fosse stato valorizzato. In altre parole, nel caso 1 il valore " " diventava "" a run-time e veniva trattato come un qualunque altro 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 SQL
      insert into TABLE (ID, NOME) values (1, 'Luca')
    Oracle genera l'errore
      ORA-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

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum