una - modificar columna auto_increment sql server




Cómo identificar si la tabla tiene una columna de identidad. (6)

Quiero saber si la tabla tiene una columna de identidad o no. La tabla es desconocida para mí. No he hecho la estructura de la mesa. ¿Usando Query?

Estoy usando Sql Server Compact Edition.


@Panay: dijo Edición compacta. Los procedimientos almacenados no son compatibles y no hay sys.anything.

Esta es la llamada:

SELECT Count(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE AUTOINC_INCREMENT IS NOT NULL AND TABLE_NAME='this_table'

Devolverá 1 (verdadero) o 0 (falso).


Cualquiera de las siguientes consultas puede usarse para verificar si una columna de identidad está presente en la tabla

1)

SELECT *
FROM sys.identity_columns
WHERE OBJECT_NAME(object_id) = 'TableName'

2)

SELECT *
FROM sys.identity_columns
WHERE object_id = (
        SELECT id
        FROM sysobjects
        WHERE name = 'TableName'
    )

Esta es la consulta que obtiene u todos los nombres de tabla, nombres de columna de la tabla e is_identity o no en la base de datos seleccionada

SELECT
     sys.columns.name
   , sys.tables.name
   , is_identity
FROM sys.columns
INNER JOIN sys.tables ON sys.tables.object_id = sys.columns.object_id
    AND sys.columns.is_identity = 1

Sé que hace mucho tiempo, pero me pareció útil

prueba esto :

IF EXISTS (SELECT * from syscolumns where id = Object_ID(@TABLE_NAME) and colstat & 1 = 1)
BEGIN
   -- Do your things
END

Una forma de hacerlo sería utilizar el procedimiento almacenado sp_help . Es decir:

sp_help MyTable

Esto devolverá un DataSet que tiene toda la información que necesitaría en la tabla. Hay una tabla específica que tiene información sobre identidades.

Es decir:

Si no contiene un campo de identidad, la columna Identidad dirá: "No hay una columna de identidad definida".


IF (OBJECTPROPERTY(OBJECT_ID('TABLE_NAME'), 'TableHasIdentity') = 1) 

ObjectProperty está disponible a partir del servidor SQL 2008 Referencia: OBJECTPROPERTY







sql-server-ce