Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Tipi di dati definiti dall'utente
martedì 01 febbraio 2011 - 11.54
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
mmjc23
Profilo
| Newbie
47
messaggi | Data Invio:
mar 1 feb 2011 - 11:54
Buongiorno a tutti
Ho un grosso problema con un database SQL 2005
Per necessità di un cliente, ho bisogno di aumentare la lunghezza di un campo ID_OPERATORE.
Attualmente il campo, ha come tipo di dati un Tipo di dati definito dall'utente "T_ID_OPERATORE" che consiste in un varchar(20), io dovrei solamente portarlo al valore varchar(30).
Questo campo, è spesso usato come chiave primaria e viene usato sia da funzioni che da StoreProcedure.
Cercando di andare a modificare il tipo di dati da SQL (Enterprise Manager/Management studio express), non posso modificare il tipo di dati.
Come posso fare?
Devo per forza:
-Per ogni tabella che ha quel tipo di colonna come chiave primaria, togliere la chiave primaria
-Per ogni tabella/store procedure/funzione che usa quel tipo di colonna cambiare temporaneamente il tipo di dati
-Eliminare il vecchio tipo di dati
-Ricreare il nuovo tipo di dati modificato
-Riassegnare a tutte le tabelle/store/funzioni il nuovo tipo di dati
-Ricreare le chiavi primarie
(oppure va be, creare uno nuovo tipo corretto e usare quello per tutto...ma devo comunque togliere le chiavi e associare le colonne al nuovo tipo?)
Mi sembra assurdo che non si possa modificare...a sto punto si perde un po' l'utilità di avere un tipo unico per definire tutte le colonne se poi non posso fare nemmeno una semplice modifica.
Grazie
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 1 feb 2011 - 14:08
>Devo per forza:
>-Per ogni tabella che ha quel tipo di colonna come chiave primaria,
>togliere la chiave primaria
>-Per ogni tabella/store procedure/funzione che usa quel tipo
>di colonna cambiare temporaneamente il tipo di dati
>-Eliminare il vecchio tipo di dati
>-Ricreare il nuovo tipo di dati modificato
>-Riassegnare a tutte le tabelle/store/funzioni il nuovo tipo
>di dati
>-Ricreare le chiavi primarie
>
>(oppure va be, creare uno nuovo tipo corretto e usare quello
>per tutto...ma devo comunque togliere le chiavi e associare le
>colonne al nuovo tipo?)
Esatto.
>Mi sembra assurdo che non si possa modificare...a sto punto si
>perde un po' l'utilità di avere un tipo unico per definire tutte
>le colonne se poi non posso fare nemmeno una semplice modifica.
Non è assurdo, gli UDT ti permettono di avere una consistenza logica tra le colonne delle tabelle ed i parametri di SP, UDF, variabili, ecc.
Anche se non avessi utilizzato un UDT, avresti avuto lo stesso problema utilizzando un data type nativo.
Fai un test: cosa succede se provi ad estendere una colonna varchar(20) sulla quale hai definito un constraint PK|FK|indice?
>Grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
mmjc23
Profilo
| Newbie
47
messaggi | Data Invio:
mar 1 feb 2011 - 14:15
Grazie mille...davvero gentile e veloce.
Non mi rimane che rassegnarmi e rivedere gran parte del DB allora.
EDIT:
Ma come si fa per creare uno script?
Nel senso, la mia "T_ID_OPERATORE", viene usata da una 20ina di tabelle, le quali sono relazionate tra loro con Primary e Foreign key. Come faccio a risalire e quindi ad andare ad eliminare tutte le chiavi prima di editare i tipi colonna e poi creare nuovamente correttamente la Chiavi?
Grazie ancora
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !