Pregunta simple, ¿cómo se enumera la clave principal de una tabla con T-SQL? Sé cómo obtener índices en una tabla, pero no recuerdo cómo obtener el PK.
sql
sql-server
tsql
swilliams
fuente
fuente
a
,b
yc
, (en ese orden), entonces mi tabla tiene una clave principal compuesto deabc
?En general, ahora es una práctica recomendada usar las
sys.*
vistasINFORMATION_SCHEMA
en SQL Server, por lo que, a menos que esté planeando migrar bases de datos, las usaría. Así es como lo haría con lassys.*
vistas:fuente
Esta es una solución que usa solo sys -tables.
Enumera todas las claves primarias de la base de datos. Devuelve el esquema, el nombre de la tabla, el nombre de la columna y el orden de clasificación de columna correcto para cada clave principal.
Si desea obtener la clave principal para una tabla específica, debe filtrar por
SchemaName
yTableName
.En mi humilde opinión, esta solución es muy genérica y no utiliza ningún literal de cadena, por lo que se ejecutará en cualquier máquina.
fuente
Aquí hay otra forma de obtener la clave principal de la tabla mediante la consulta SQL :
Se usa
KEY_COLUMN_USAGE
para determinar las restricciones para una tabla dadaLuego se usa para determinar si cada una es una clave primaria
OBJECTPROPERTY(id, 'IsPrimaryKey')
fuente
Me gusta la técnica INFORMATION_SCHEMA, pero otra que he usado es: exec sp_pkeys 'table'
fuente
Si utiliza MS SQL Server, puede hacer lo siguiente:
También puede filtrar en la columna table_name si desea una tabla específica.
fuente
--Esta es otra versión modificada que también es un ejemplo de consulta co-relacionada
fuente
Esto debe enumerar todas las restricciones (clave principal y claves externas) y al final de la consulta poner el nombre de la tabla
Para referencia, lea a través de: http://blogs.msdn.com/b/sqltips/archive/2005/09/16/469136.aspx
fuente
fuente
Gracias amigo.
Con una ligera variación, lo usé para encontrar todas las claves primarias para todas las tablas.
fuente
fuente
Este te da las columnas que son PK.
fuente
El procedimiento almacenado del sistema
sp_help
le dará la información. Ejecute la siguiente declaración:fuente
La siguiente consulta enumerará las claves primarias de una tabla en particular :
fuente
Estoy contando una técnica sencilla que sigo
ejecute este código como consulta. Mencione el nombre de su tabla en el lugar de table_name para la que desea conocer la clave principal (no olvide las comillas simples). El resultado se mostrará como la imagen adjunta. Espero que te ayude
fuente
Para obtener una lista separada por comas de columnas de clave principal para un TableName y un esquema determinados:
fuente
Prueba esto:
fuente
Esta versión muestra el esquema, el nombre de la tabla y una lista ordenada y separada por comas de claves primarias. Object_Id () no funciona para servidores de enlaces, por lo que filtramos por el nombre de la tabla.
Sin REPLACE (Si1.Column_Name, '', ''), mostraría las etiquetas xml de apertura y cierre para Column_Name en la base de datos en la que estaba probando. No estoy seguro de por qué la base de datos requirió un reemplazo para 'Column_Name', así que si alguien lo sabe, comente.
Y el mismo patrón usando la consulta de George:
fuente
Encontré esto útil, da una lista de tablas con una lista separada por comas de las columnas y luego también una lista separada por comas de cuáles son la clave principal
fuente
fuente
¿Puedo sugerir una respuesta simple más precisa a la pregunta original a continuación?
Notas:
fuente
Es posible que se haya publicado recientemente, pero con suerte esto ayudará a alguien a ver la lista de claves primarias en el servidor SQL mediante esta consulta t-sql:
Puede ver la lista de todas las claves externas mediante esta consulta si lo desea:
fuente
Encontré esto de mi amigo, muy efectivo si está buscando todas las claves primarias de la tabla bajo un esquema particular.
fuente
Si está buscando hacer su propio ORM o generar código a partir de una tabla determinada, entonces esto podría ser lo que busca:
Así es como se vería el resultado:
fuente
Si se necesita la clave principal y el tipo, esta consulta puede ser útil:
fuente