DB: Modifica nomi oggetti

copia link

Descrizione del difetto

Se venivano applicate le modifiche al database e fosse stato cambiato il nome o il DBCode di una stored procedure, stored function, trigger o vista, veniva generato un errore dal database. L'algoritmo differenziale di aggiornamento, infatti, non teneva correttamente conto del fatto che l'oggetto era presente ma con un nome diverso.

Effetti del malfunzionamento

  • Veniva generato un errore durante la procedura di modifica del database.
  • L'errore veniva generato anche se si utilizzava il comando Aggiorna database del menù contestuale di stored procedure, stored function, trigger e viste.

Soluzioni

Utilizzare la versione 9.0.3940.

Funzionalità interessate

La modifica del database.

Note

  • Per SQLServer, viene utilizzato il comando
       exec sp_rename
    per rinominare stored procedure, stored function, trigger e viste prima di applicare a questi oggetti le necessarie modifiche.
  • Oracle non supporta la modifica al nome delle stored procedure, stored function e trigger quindi se uno o più di questi oggetti hanno cambiato il loro DBCode vengono eliminati e poi ricreati con il nuovo DBCode. Oracle permette, invece, la modifica al DBCode delle viste tramite il comando
       rename ...
  • Postgres, DB2 e Access non ammettono modifiche alle viste del database. Pertanto Instant Developer elimina la vecchia vista e ne crea una nuova con il nuovo DBCode.
  • MySql ammette modifiche alle viste a meno che non ne venga cambiato il nome. Pertanto se la vista è cambiata ma non è stato cambiato il DBCode, viene utilizzato il comando
      alter view ...
    Se invece viene cambiato il DBCode della vista Instant Developer elimina la vecchia vista e ne crea una nuova con il nuovo DBCode.
  • Attenzione: Nella versione 8.1.3650 e precedenti il difetto si manifesta in maniera diversa: tali versioni, infatti, non utilizzavano l'algoritmo differenziale ma eseguivano, nel caso di stored procedure, stored function, trigger e viste, le seguenti operazioni:
       drop OBJECT
       create OBJCT
    Pertanto se veniva modificato il DBCode di stored procedure, stored function trigger e viste e si utilizzava l'operazione di modifica del database, Instant Developer tentava di eliminare gli oggetti usando il nuovo DBCode senza segnalare errori se l'oggetto non esisteva. L'effetto del malfunzionamento è quello di creare nuovi oggetti lasciando sul database i vecchi oggetti. Ciò non causa effetti imprevisti nel caso di stored procedure, stored function e viste. Può, però, causare malfunzionamenti nel caso di trigger poiché Instant Developer creava nuovi oggetti senza eliminare i vecchi oggetti presenti sul database.

Ultima modifica: 26/03/2010 / Validità: da 9.0.3940