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

DB: Errore aggiornamento Trigger

copia link

Descrizione del difetto

Era impossibile aggiornare il database qualora fosse presente un trigger che contenesse il blocco ERROR ed una variabile o una funzione come parametro. Il malfunzionamento si manifestava solo sul database SQL Server 2000 e SQL Server 2005 ed era dovuto al fatto che l'espressione Visual Code

   ERROR [NumeroErrore]
generava, oltre all'espressione SQL
   raiserror ([NumeroErrore+50000],16,1) with seterror
anche l'inserimento di un messaggio di testo tramite una chiamata alla stored procedure sp_addmessage
   sp_addmessage @msgnum=[NumeroErrore+50000], @severity=16, @lang='us_english', @msgtext='[TestoErrore]', @replace='REPLACE'
dove [TestoErrore] assumeva il valore dell'espressione collegata al blocco ERROR, se presente, o alla descrizione dello stesso blocco se l'espressione è assente.

Il malfunzionamento si verificava se al posto di una costante numerica come parametro del blocco di codice ERROR veniva utilizzata una variabile o una chiamata ad una funzione. A design-time Instant Developer non riusciva a calcolare il valore di tali oggetti e creava, in fase di aggiornamento del database, le chiamate alle procedure raiserror o sp_addmessage fornendo ad entrambe il valore 50000. Mentre la chiamata alla procedura raiserror accetta il valore 50000 la stored procedure sp_addmessage genera un errore se il numero del messaggio di errore è minore o uguale a 50001.

Effetti del malfunzionamento

  • Veniva generato un errore durante l'aggiornamento del database.

Soluzioni

La versione 7.5 non genera errore il messaggio di errore in questo caso, evitando così l'errore.

E' comunque sufficiente utilizzare un valore costante come parametro del blocco ERROR. Qualora fosse stata utilizzata una variabile come parametro è sufficiente fornire alla variabile un valore predefinito diverso da 0. Se fosse stata utilizzata una funzione è sufficiente utilizzare comunque una variabile assegnandole il risultato della funzione.

Funzionalità interessate

L'uso del blocco di codice ERROR in un trigger con database SQL Server 2000 o SQL Server 2005.

Ultima modifica: 03/04/2020 / Validità: da 7.5.3400

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum