No hay nada en la llamada a GetSchemaTable
on SqlConnection
que le permitirá a resolver esto.
Puede parecer que puede, utilizando el valor de columna IsKey
, que debe devolver verdadero para cualquier cosa que contribuya a la identificación única del registro en la tabla. Sin embargo, a partir de la documentación de la IsKey
columna (énfasis mío):
cierto: La columna es una de un conjunto de columnas del conjunto de filas que, tomada juntos, identificar de forma exclusiva la fila. El conjunto de columnas con IsKey establecido en true debe identificar de forma única una fila en el conjunto de filas. No existe el requisito de que este conjunto de columnas sea un conjunto mínimo de columnas . Este conjunto de columnas puede generarse a partir de una tabla base clave principal, una restricción única o índice único.
Debido a esto, no puede garantizar que contribuya a una clave principal per-se.
Ahora, si todo lo que necesita es algo para identificar de forma única la fila, IsKey
está bien, ya que la clave principal no siempre es la forma única de identificar una fila (por ejemplo, puede tener identificadores naturales con un índice único). Incluso si tiene una clave principal y un índice único con otras columnas, los valores en todas las columnas en combinación siempre serán únicos.
Sin embargo, si específicamente necesita ver las columnas que componen la clave principal, entonces GetSchemaTable
no le dará la información que necesita. En su lugar, puede realizar una llamada al procedimiento almacenado del sistema sp_pkeys
para buscar los nombres de las columnas que contribuyen a generar la clave principal.
gracias por su explicación reply.from No entiendo por qué tengo que cambiar en mi anterior C# syntax.Will plz decir lo que necesito cambiar en mi código. gracias – shamim
@shamim: consulte el enlace para el procedimiento almacenado 'sp_keys', tendrá que llamar a este procedimiento almacenado para obtener las columnas que componen la clave principal de una tabla. – casperOne
en mi sintaxis anterior utilizo el procedimiento sp_keys allí paso el nombre de la tabla, en mi tabla de datos obtengo el esquema, pero desde el esquema no puedo detectar la clave primaria. Así que busco su sugerencia y ayuda. Gracias – shamim