una - modificar columna auto_increment sql server
Cómo identificar si la tabla tiene una columna de identidad. (6)
@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).
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.
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