una tablas recomendaciones rapidas porque optimizar mas lenta las grandes dañan cuello consultas consulta como botella agilizar sql-server code-generation primary-key data-access-layer

sql server - tablas - ¿Cómo puedo determinar si una columna está en la clave principal de su tabla?(Servidor SQL)



tablas grandes mysql (3)

Actualmente estoy usando ...

select Table_Name, Column_name, data_type, is_Nullable from information_Schema.Columns

... para determinar información sobre columnas en una base de datos dada con el propósito de generar una capa de DataAccess.

¿Desde dónde puedo recuperar información sobre si estas columnas son participantes en la clave principal de su tabla?


Aquí hay una forma (reemplace ''keycol'' con el nombre de la columna que está buscando):

SELECT K.TABLE_NAME, K.COLUMN_NAME, K.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS C JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS K ON C.TABLE_NAME = K.TABLE_NAME AND C.CONSTRAINT_CATALOG = K.CONSTRAINT_CATALOG AND C.CONSTRAINT_SCHEMA = K.CONSTRAINT_SCHEMA AND C.CONSTRAINT_NAME = K.CONSTRAINT_NAME WHERE C.CONSTRAINT_TYPE = ''PRIMARY KEY'' AND K.COLUMN_NAME = ''keycol'';


Del mismo modo, lo siguiente le dará información sobre todas las tablas y sus claves, en lugar de información sobre columnas específicas. De esta manera, se asegura de tener todas las columnas de interés y saber en qué participan. Para ver todas las claves (primaria, extranjera, única), comente la cláusula WHERE.

SELECT K.TABLE_NAME, C.CONSTRAINT_TYPE, K.COLUMN_NAME, K.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS C JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS K ON C.TABLE_NAME = K.TABLE_NAME AND C.CONSTRAINT_CATALOG = K.CONSTRAINT_CATALOG AND C.CONSTRAINT_SCHEMA = K.CONSTRAINT_SCHEMA AND C.CONSTRAINT_NAME = K.CONSTRAINT_NAME WHERE C.CONSTRAINT_TYPE = ''PRIMARY KEY'' ORDER BY K.TABLE_NAME, C.CONSTRAINT_TYPE, K.CONSTRAINT_NAME


Para su necesidad, unión externa completa con INFORMATION_SCHEMA.COLUMNS e INFORMATION_SCHEMA.KEY_COLUMN_USAGE. En la instrucción de selección, agregue la columna CONSTRAINT_NAME de INFORMATION_SCHEMA.KEY_COLUMN_USAGE que le dará null o keyname.

select C.Table_Name, C.Column_name, data_type, is_Nullable, U.CONSTRAINT_NAME from information_Schema.Columns C FULL OUTER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE U ON C.COLUMN_NAME = U.COLUMN_NAME WHERE C.TABLE_NAME=@TABLENAME