Principale utente con più risposte
conoscere nome di un vincolo abbinato ad una colonna

Domanda
-
Buongiorno,
ho una tabella alla quale vorrei modificare il tipo di campo da bit in tinyint, ma sulla colonna c'e un vincolo di default.
Le tabelle sono diverse e non conosco il nome del vincolo.
So che prima di modificare il tipo di campo devo eliminare il vincolo.
Come posso conoscere il nome del vincolo di una colonna?
ALTER TABLE [dbo].[NOMETABELLA] DROP CONSTRAINT [DF_vincolo]
GO
ALTER TABLE dbo.NOMETABELLA ALTER COLUMN nomecolonna tinyint
GO
ALTER TABLE [dbo].[NOMETABELLA] ADD CONSTRAINT [DF_vincolo] DEFAULT ((0)) FOR [nomecolonna]
GO
Sono riuscito a trovare il nome dei vincoli di una tabella in questo modo:
SELECT sobjects.name, * FROM sysobjects sobjects WHERE sobjects.xtype = 'D' and sobjects.parent_obj = ( SELECT sobjects.id FROM sysobjects sobjects WHERE sobjects.xtype = 'U' and sobjects.name = 'NOMETABELLA')
ma non quelli di una colonna.
Grazie a chi mi darà una mano
Marco Dell'Oca
- Modificato Marco Dell'Oca lunedì 19 novembre 2018 10:53 errore di trascrizione
Risposte
-
vedi se questa soluzione ti aiuta
https://stackoverflow.com/questions/18622200/how-do-i-get-constraints-on-a-sql-table-column
Edoardo Benussi
Microsoft MVP - Cloud and Datacenter Management
e[dot]benussi[at]outlook[dot]it- Proposto come risposta Edoardo BenussiMVP, Moderator lunedì 19 novembre 2018 13:39
- Contrassegnato come risposta Marco Dell'Oca lunedì 19 novembre 2018 14:21
-
Grazie Edoardo,
con il tuo aiuto ho trovato la soluzione che è la seguente:
select chk.name
from sys.default_constraints chk
inner join sys.columns col
on chk.parent_object_id = col.object_id
inner join sys.tables st
on chk.parent_object_id = st.object_id
where
st.name = 'Nometabella'
and col.column_id = chk.parent_column_id
and col.name = 'nomecolonna'Così riesco a trovare il nome del vincolo.
Grazie ancora
Marco Dell'Oca
- Contrassegnato come risposta Marco Dell'Oca lunedì 19 novembre 2018 14:21
Tutte le risposte
-
vedi se questa soluzione ti aiuta
https://stackoverflow.com/questions/18622200/how-do-i-get-constraints-on-a-sql-table-column
Edoardo Benussi
Microsoft MVP - Cloud and Datacenter Management
e[dot]benussi[at]outlook[dot]it- Proposto come risposta Edoardo BenussiMVP, Moderator lunedì 19 novembre 2018 13:39
- Contrassegnato come risposta Marco Dell'Oca lunedì 19 novembre 2018 14:21
-
Grazie Edoardo,
con il tuo aiuto ho trovato la soluzione che è la seguente:
select chk.name
from sys.default_constraints chk
inner join sys.columns col
on chk.parent_object_id = col.object_id
inner join sys.tables st
on chk.parent_object_id = st.object_id
where
st.name = 'Nometabella'
and col.column_id = chk.parent_column_id
and col.name = 'nomecolonna'Così riesco a trovare il nome del vincolo.
Grazie ancora
Marco Dell'Oca
- Contrassegnato come risposta Marco Dell'Oca lunedì 19 novembre 2018 14:21