Deshabilitar FK

10/09/2003 - 16:13 por German de Perosanz | Informe spam
Existe la posibilidad de deshabilitar las FK de una base asi puedo hacer un
TRUNCATE TABLE de todas las tablas para insertarle nueva info, luego de esto
deberia poder habilitar todas las FK.

Muchas gracias

Esto en oracle se hace asi: (para que tengan una idea de lo que quiero
hacer)

SELECT 'ALTER TABLE '|| C.TABLE_NAME||' DISABLE CONSTRAINT
'||C.CONSTRAINT_NAME ||';'
FROM USER_CONSTRAINTS C, USER_TABLES T WHERE C.CONSTRAINT_TYPE <>'C' AND
C.OWNER = 'GREYDIR'
AND C.TABLE_NAME = T.TABLE_NAME
ORDER BY DECODE(C.CONSTRAINT_TYPE, 'P', 1, 'U', 2, 3) DESC;



German

Preguntas similare

Leer las respuestas

#1 Miguel Egea
10/09/2003 - 18:28 | Informe spam
SqlServer trata la integridad referencial de forma más robusta y no te
permitirá hacer un truncate con que exista una relación de integridad, esté
o no habilitada.

Sin embargo, por lo que veo lo que haces es vaciar todas las tablas ¿? si es
así SQL te permite generar un script de toda la bd completa y podrías
lanzarlo donde quisiese obteniendo esa bd vacia


Saludos Cordiales
=Proxima reunión virtual sobre rendimiento
Viernes 12 de Septiembre de 2003, 19:30 hora española.
18:30 hora GMT.
A través del canal #sqlserver del irc hispano

Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.

¡Cuida el rendimiento! Evita los cursores
Brigada Anti-Cursores
==

"German de Perosanz" escribió en el mensaje
news:uKiB$
Existe la posibilidad de deshabilitar las FK de una base asi puedo hacer


un
TRUNCATE TABLE de todas las tablas para insertarle nueva info, luego de


esto
deberia poder habilitar todas las FK.

Muchas gracias

Esto en oracle se hace asi: (para que tengan una idea de lo que quiero
hacer)

SELECT 'ALTER TABLE '|| C.TABLE_NAME||' DISABLE CONSTRAINT
'||C.CONSTRAINT_NAME ||';'
FROM USER_CONSTRAINTS C, USER_TABLES T WHERE C.CONSTRAINT_TYPE <>'C' AND
C.OWNER = 'GREYDIR'
AND C.TABLE_NAME = T.TABLE_NAME
ORDER BY DECODE(C.CONSTRAINT_TYPE, 'P', 1, 'U', 2, 3) DESC;



German


Respuesta Responder a este mensaje
#2 Gustavo Larriera [MVP]
10/09/2003 - 22:47 | Informe spam
Puedes usar ALTER TABLE - NOCHECK / CHECK
Eso te permite deshabilitar/habilitar FKs y CHECKs

saludos
gux

Gustavo Larriera, MSFT MVP-SQL
Uruguay LatAm

This message is provided "AS IS" with no warranties expressed or implied,
and confers no rights.


"German de Perosanz" wrote in message
news:uKiB$
Existe la posibilidad de deshabilitar las FK de una base asi puedo hacer


un
TRUNCATE TABLE de todas las tablas para insertarle nueva info, luego de


esto
deberia poder habilitar todas las FK.

Muchas gracias

Esto en oracle se hace asi: (para que tengan una idea de lo que quiero
hacer)

SELECT 'ALTER TABLE '|| C.TABLE_NAME||' DISABLE CONSTRAINT
'||C.CONSTRAINT_NAME ||';'
FROM USER_CONSTRAINTS C, USER_TABLES T WHERE C.CONSTRAINT_TYPE <>'C' AND
C.OWNER = 'GREYDIR'
AND C.TABLE_NAME = T.TABLE_NAME
ORDER BY DECODE(C.CONSTRAINT_TYPE, 'P', 1, 'U', 2, 3) DESC;



German


Respuesta Responder a este mensaje
#3 German de Perosanz
10/09/2003 - 23:09 | Informe spam
Genere el script de todo la base, ahi me quedaron las tablas en blanco y
despues use el DTS para migrar los datos.

muchas gracias


Muc
"Miguel Egea" escribió en el mensaje
news:%23%
SqlServer trata la integridad referencial de forma más robusta y no te
permitirá hacer un truncate con que exista una relación de integridad,


esté
o no habilitada.

Sin embargo, por lo que veo lo que haces es vaciar todas las tablas ¿? si


es
así SQL te permite generar un script de toda la bd completa y podrías
lanzarlo donde quisiese obteniendo esa bd vacia


Saludos Cordiales
=> Proxima reunión virtual sobre rendimiento
Viernes 12 de Septiembre de 2003, 19:30 hora española.
18:30 hora GMT.
A través del canal #sqlserver del irc hispano

Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.

¡Cuida el rendimiento! Evita los cursores
Brigada Anti-Cursores
==>

"German de Perosanz" escribió en el mensaje
news:uKiB$
> Existe la posibilidad de deshabilitar las FK de una base asi puedo hacer
un
> TRUNCATE TABLE de todas las tablas para insertarle nueva info, luego de
esto
> deberia poder habilitar todas las FK.
>
> Muchas gracias
>
> Esto en oracle se hace asi: (para que tengan una idea de lo que quiero
> hacer)
>
> SELECT 'ALTER TABLE '|| C.TABLE_NAME||' DISABLE CONSTRAINT
> '||C.CONSTRAINT_NAME ||';'
> FROM USER_CONSTRAINTS C, USER_TABLES T WHERE C.CONSTRAINT_TYPE <>'C' AND
> C.OWNER = 'GREYDIR'
> AND C.TABLE_NAME = T.TABLE_NAME
> ORDER BY DECODE(C.CONSTRAINT_TYPE, 'P', 1, 'U', 2, 3) DESC;
>
>
>
> German
>
>


Respuesta Responder a este mensaje
#4 Miguel Egea
10/09/2003 - 23:14 | Informe spam
quizá para este caso podrías haber hecho backup&restore, habría sido más
sencillo, pero si te ha servido, estupendo!!


=SALVA A SQL,
MATA UN CURSOR

Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.
Brigada Anti-Cursores
==
"German de Perosanz" escribió en el mensaje
news:%230rcKA%
Genere el script de todo la base, ahi me quedaron las tablas en blanco y
despues use el DTS para migrar los datos.

muchas gracias


Muc
"Miguel Egea" escribió en el mensaje
news:%23%
> SqlServer trata la integridad referencial de forma más robusta y no te
> permitirá hacer un truncate con que exista una relación de integridad,
esté
> o no habilitada.
>
> Sin embargo, por lo que veo lo que haces es vaciar todas las tablas ¿?


si
es
> así SQL te permite generar un script de toda la bd completa y podrías
> lanzarlo donde quisiese obteniendo esa bd vacia
>
>
> Saludos Cordiales
> => > Proxima reunión virtual sobre rendimiento
> Viernes 12 de Septiembre de 2003, 19:30 hora española.
> 18:30 hora GMT.
> A través del canal #sqlserver del irc hispano
>
> Miguel Egea
> http://www.portalsql.com
> Microsoft SQL-SERVER MVP.
>
> ¡Cuida el rendimiento! Evita los cursores
> Brigada Anti-Cursores
> ==> >
>
> "German de Perosanz" escribió en el mensaje
> news:uKiB$
> > Existe la posibilidad de deshabilitar las FK de una base asi puedo


hacer
> un
> > TRUNCATE TABLE de todas las tablas para insertarle nueva info, luego


de
> esto
> > deberia poder habilitar todas las FK.
> >
> > Muchas gracias
> >
> > Esto en oracle se hace asi: (para que tengan una idea de lo que quiero
> > hacer)
> >
> > SELECT 'ALTER TABLE '|| C.TABLE_NAME||' DISABLE CONSTRAINT
> > '||C.CONSTRAINT_NAME ||';'
> > FROM USER_CONSTRAINTS C, USER_TABLES T WHERE C.CONSTRAINT_TYPE <>'C'


AND
> > C.OWNER = 'GREYDIR'
> > AND C.TABLE_NAME = T.TABLE_NAME
> > ORDER BY DECODE(C.CONSTRAINT_TYPE, 'P', 1, 'U', 2, 3) DESC;
> >
> >
> >
> > German
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida