ver una tabla saber relaciones primaria obtener modificar llave las foranea creada compuesta como clave agregar sql sql-server tsql primary-key

una - obtener clave primaria tabla sql server



Determine la clave primaria de una tabla utilizando TSQL (9)

¡La forma más simple es esta!

select object_id from sys.objects where parent_object_id = OBJECT_ID(N''FACounty'') and [type] = N''PK''

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)?


Aquí hay uno basado en tablas de sistema de SQL 2005 (99% seguro de que funcionaría 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


Es mejor que utilices INFORMATION_SCHEMA.KEY_COLUMN_USAGE, ya que puedes acceder a la información clave de pedidos (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


Esto debería comenzar:

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 si

sp_pkeys ''TableName''


Si ya conoce el nombre de la clave que le interesa, siga los siguientes trabajos:

-- 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


EXEC sp_Pkeys @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''


exec [sys].[sp_primary_keys_rowset] @table_name= ''TableName''