Deberias hacer algo como esto, por ejemplo para los Default constraints:
declare @constraint_default_name varchar(256)
select @constraint_default_name = d.name from sys.default_constraints as d
inner join sys.columns as c on c.default_object_id = d.object_id
where c.object_id = object_id( 'NombreDeLaTabla', 'U') and c.name =
'NombreDeLaColumna'
if (@constraint_default_name is not null)
exec( N'alter table dbo.NombreDeLaTabla drop constraint ' +
@constraint_default_name)
GO
Saludos
Alejandro.
_____
De: [email protected] [mailto:[email protected]] En nombre de Massetti Sebastian
Enviado el: Viernes, 19 de Marzo de 2010 10:55 a.m.
Para: GUFA List Member
Asunto: [GUFA] OT Sql
Pablo:
El tema es el siguiente, se trata de modificar masivamente 1500 campos, el
script que genera el motor muestra claramente lo que hace, pero justamente
mi problema es emular como borrar cada constraint sin conocer su nombre, el
motor cuando genera el script directamente borra las constraint por su
nombre lo cual no conozco.
Se entiende ?
Gracias.
Sebastian
De: [email protected] [mailto:[email protected]] En nombre de PabloC
Enviado el: Viernes, 19 de Marzo de 2010 09:59 a.m.
Para: GUFA List Member
Asunto: [GUFA] OT Sql
Hola Sebastian, porque no hace algo mas simple
Desde el Enterprise manager para SQL2000 o el SQL Server Management Studio
para 2005/08 modifica los campos de la tabla que desees y después antes de
confirmar decile que te genere el Script de modificación, ahí vas a ver como
lo hace el motor
Saludos
PabloC
De: [email protected] [mailto:[email protected]] En nombre de Massetti Sebastian
Enviado el: Viernes, 19 de Marzo de 2010 09:45
Para: GUFA List Member
Asunto: [GUFA] OT Sql
Hola Lista:
Necesito cambiar el tipo de datos de varias columnas de varias tablas
(por ejemplo de INT a TINYINT) para lo cual utilizo ALTER COLUMN pero previo
a eso tengo que eliminar todas las constrains ya que el ALTER COLUMN falla
si hay constrains para ese campo.
A lo mejor estoy haciéndolo mal y hay una forma más sencilla de cambiar los
tipos de datos si tener que borrar previamente las constraints.
En SQL2000 bastaba con ver la tabla SYSOBJECTS donde XTYPE=D , PARENT_OBJ=
(id de la tabla) y la columna SYSOBJECTS.INFO me indicaba el nro ordinal del
campo según el diseño de la tabla.
Con esto yo consulto bien las constrains que tiene un campo y las puedo
borrar con un DROP.
En SQL2005, la columna SYSOBJECTS.INFO está vacia y no tengo forma de
identificar las constraints.
Alguien sabe de que forma puedo consultar esto ? o mejor aún como cambiar el
tipo de datos más directamente ?
Desde ya muchas gracias.
Sebastian.
__________ NOD32 4952 (20100317) Information __________
This message was checked by NOD32 antivirus system.
http://www.eset.com