DB: Modifica nomi oggetti
copia linkDescrizione 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