Obtener lista de campos que son Primary Keys

18/03/2007 - 09:49 por Tomas | Informe spam
Hola a todos.

Tengo unas dudas sobre SQL Server 2000:

¿Alguien sabe como se puede obtener una lista de todos los campos de todas
las tablas de una base de datos que son Primary Keys?.

¿Se pueden desactivar / activar las primary key?

El motivo es que tengo que hacer un cambio masivo de datos y me gustaria,
primero conocer los campos que son PK en todas las tablas y después si se
puede desactivar y volver a activar una vez terminados los cambios.

Ya conozco lo de NOCHECK CONSTRAINT para las tablas pero esto no me es
suficiente.

Gracias a todos.

Tomás.
 

Leer las respuestas

#1 Javier Loria
18/03/2007 - 19:02 | Informe spam
Hola Tomas:
La informacion que buscas esta en INFORMATION_SCHEMA. Puedes probar con:
SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE='PRIMARY KEY'

SELECT *
FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS
ON CONSTRAINT_COLUMN_USAGE.CONSTRAINT_NAME=TABLE_CONSTRAINTS.CONSTRAINT_NAME
WHERE CONSTRAINT_TYPE='PRIMARY KEY'
La primera te da la lista de todas las llaves primarias y la segunda la
de las columnas.
Una opcion, que podrias investigar es crear un script para borrar y otro
para recrear las llaves, el problema es que no solo hay que borrar la llaves
primarias, sino tambien todas las secundarias :(. Igual para volver a
crearlas.
Si esta dispuesto a hacer esto, lo exploramos y te ayudo a construirlo.
Saludos,


Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.



"Tomas" wrote in message
news:eo%
Hola a todos.

Tengo unas dudas sobre SQL Server 2000:

¿Alguien sabe como se puede obtener una lista de todos los campos de todas
las tablas de una base de datos que son Primary Keys?.

¿Se pueden desactivar / activar las primary key?

El motivo es que tengo que hacer un cambio masivo de datos y me gustaria,
primero conocer los campos que son PK en todas las tablas y después si se
puede desactivar y volver a activar una vez terminados los cambios.

Ya conozco lo de NOCHECK CONSTRAINT para las tablas pero esto no me es
suficiente.

Gracias a todos.

Tomás.

Preguntas similares