IDE: SelectIMDB - InsertDB senza primary key
copia linkDescrizione del difetto
Errore nell'esecuzione della riga di codice Select(IMDB)-Insert(DB) qualora la tabella di destinazione della query fosse priva di campi primary key.
La copia dei dati da IMDB a DB, infatti, viene infatti eseguita nel modo seguente: viene effettuato un for-each sul risultato della query IMDB. Per ogni riga della query IMDB viene effettuata un'operazione di update sulla tabella del database. Se l'operazione di update non modifica nessuna riga allora viene eseguita un'istruzione di insert sulla tabella del database. Se, però, la tabella di destinazione non conteneva campi primary key l'operazione di update modificava sempre tutte le righe causando effetti non attesi.
A partire dalla versione 10.5 Instant Developer controlla che la tabella di destinazione contenga almeno un campo primary key. Qualora la tabella di destinazione sia sprovvista della primary key In.de genera l'errore "1628 - Nelle query Select(IMDB)-Insert(DB) è necessario che la tabella di destinazione possieda almeno un campo PK."
Effetti del malfunzionamento
- L'istruzione Select(IMDB)-Insert(DB) modificava tutte le righe della tabella di destinazione se manca parte della primary key nella select lsit.
Soluzioni
Questo difetto è stato risolto nella versione 10.5. Per le versioni precedenti è sufficiente inserire un apposito campo PK nella tabella di destinazione ed includere il campo nella select list della query.
Funzionalità interessate
La copia di dati da tabella IMDB a tabella DB tramite l'istruzione Select(IMDB)-Insert(DB).
Ultima modifica: 30/09/2011 / Validità: da 10.5.4660