Me gustaría determinar la clave primaria de una tabla utilizando TSQL (el procedimiento almacenado o la tabla del sistema está bien). ¿Hay tal mecanismo en SQL Server (2005 o 2008)?Determine la clave primaria de una tabla utilizando TSQL
Respuesta
Esto debería empezar:
SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ccu ON tc.CONSTRAINT_NAME = ccu.Constraint_name
WHERE tc.CONSTRAINT_TYPE = 'Primary Key'
¿Qué tal
sp_pkeys 'TableName'
EXEC sp_Pkeys @tableName
exec [sys].[sp_primary_keys_rowset] @table_name= 'TableName'
SELECT ccu.COLUMN_NAME, ccu.CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS tc
INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS ccu
ON tc.CONSTRAINT_NAME = ccu.CONSTRAINT_NAME
WHERE tc.TABLE_CATALOG = 'Your_Catalog' -- replace with your catalog
AND tc.TABLE_SCHEMA = 'dbo' -- replace with your schema
AND tc.TABLE_NAME = 'Your_Table' -- replace with your table name
AND tc.CONSTRAINT_TYPE = 'PRIMARY KEY'
Esto es _way_ mejor que la respuesta aceptada, ya que proporciona el nombre de la tabla . –
¡También es mucho mejor ya que tiene la carcasa correcta en las columnas y PRIMARY KEY para que funcione en un servidor sensible a mayúsculas y minúsculas! –
Aquí hay uno basado en las tablas del sistema de SQL Server 2005 (99% seguro de que' d trabajo en 2008). Esto mostrará una lista de todas las PK para todas las tablas definidas por el usuario, con todas las columnas y algunas pelusas adicionales que podrían eliminarse. Agregue parámetros para elegir una tabla a la vez.
SELECT
schema_name(ta.schema_id) SchemaName
,ta.name TableName
,ind.name
,indcol.key_ordinal Ord
,col.name ColumnName
,ind.type_desc
,ind.fill_factor
from sys.tables ta
inner join sys.indexes ind
on ind.object_id = ta.object_id
inner join sys.index_columns indcol
on indcol.object_id = ta.object_id
and indcol.index_id = ind.index_id
inner join sys.columns col
on col.object_id = ta.object_id
and col.column_id = indcol.column_id
where ind.is_primary_key = 1
order by
ta.name
,indcol.key_ordinal
Sí, funciona en SQL 2008 también. –
¡La manera más simple es esta!
select object_id from sys.objects
where parent_object_id = OBJECT_ID(N'FACounty')
and [type] = N'PK'
Este código no devuelve las columnas que constan de la clave principal, pruebe las claves primarias compuestas. – veljasije
Es mejor utilizar INFORMATION_SCHEMA.KEY_COLUMN_USAGE como se puede acceder a la información de pedido de claves (ORDINAL_POSITION) que es muy importante saber.
SELECT kcu.*
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
ON tc.TABLE_NAME = kcu.TABLE_NAME
AND tc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME
ORDER BY tc.TABLE_NAME
,tc.CONSTRAINT_NAME
,kcu.ORDINAL_POSITION
Si ya conoce el nombre de la clave que le interesa, las obras siguientes:
-- Assuming you have schema "Example" and the primary key name is "PK_Item"
-- Notice that name of table is irrelevant here but is "Foobar" here
IF (OBJECT_ID('Example.PK_ITEM') IS NULL)
BEGIN
ALTER TABLE [Example].Foobar ADD CONSTRAINT
PK_Item PRIMARY KEY ...
END
- 1. tabla no tiene una clave primaria
- 2. Cómo agregar una clave primaria compuesta a la tabla
- 3. Insertar una clave primaria autoincrementada en una tabla de acceso
- 4. ¿Podemos actualizar los valores de clave primaria de una tabla?
- 5. Entidad JPA para una tabla sin clave primaria
- 6. h2 sql, crear tabla con clave primaria de varias columnas?
- 7. clave primaria versus clave
- 8. clave primaria compuesta
- 9. Actualización de MySQL primaria clave
- 10. clave externa cakephp no la clave primaria
- 11. Clave externa de tabla SQL que es parte de una clave primaria compuesta
- 12. ¿Falsifica una clave primaria compuesta? Rails
- 13. clave externa Hibernate como parte de la clave primaria
- 14. ¿La clave primaria SQL puede aceptar '0'?
- 15. TSQL - instrucción MERGE con la clave compuesta
- 16. Seleccionar nodos XML utilizando TSQL
- 17. SQL - Insertar una fila y devolver la clave primaria
- 18. Hibernar, alterar identificador/clave primaria
- 19. ¿Cómo obtener la clave primaria de una tabla sin hacer un segundo viaje?
- 20. cómo hacer mapeo de Hibernate para la tabla o vista sin una clave primaria
- 21. Inserto de Linq sin clave primaria
- 22. ¿Requiere MySQL una clave primaria para una tabla de enlaces de muchos a muchos?
- 23. Inserciones manuales en una tabla de postgres con una secuencia de clave primaria
- 24. Clave primaria de datos principales
- 25. eliminar registros duplicados de una tabla de SQL sin una clave primaria
- 26. clave primaria compuesta de PostgreSQL
- 27. SQL Server 2008 Búsqueda de texto completo en una tabla con una clave primaria compuesta
- 28. SQLSERVER: ¿Cómo modificar una tabla existente int clave primaria para convertirse en una columna de identidad?
- 29. SQLite clave multi-primaria en una tabla, una de ellas es Incremento automático
- 30. ¿Cómo agregar una clave primaria de incremento automático a una tabla existente, en PostgreSQL?
estelar! Veo un rendimiento mucho mejor a partir de esto que desde la tabla se une a information_schema –
Esto sería mucho más útil si fuera una función de tabla con valores que pudiera seleccionar desde – xr280xr