Подтвердить что ты не робот

Как определить, имеет ли стол столбец идентификатора

Я хочу узнать, есть ли столбец идентификатора или нет. Стол мне неизвестен. Я не сделал структуру таблицы. Использование запроса?

Я использую Sql Server Compact Edition.

4b9b3361

Ответ 1

Это запрос, который возвращает имя столбца идентификатора;

create procedure GetIdentity 
@tablename varchar(50)
begin
    SELECT   OBJECT_NAME(OBJECT_ID) AS TABLENAME, 
             NAME AS COLUMNNAME, 
             SEED_VALUE, 
             INCREMENT_VALUE, 
             LAST_VALUE, 
             IS_NOT_FOR_REPLICATION 
    FROM     SYS.IDENTITY_COLUMNS 
    WHERE OBJECT_NAME(OBJECT_ID) = @tablename
end

Затем сформируйте кодовую сторону.

Вызовите эту хранимую процедуру с использованием роли datareader, затем отметьте datareader.hasrows(). Если значение условия истинно (1), тогда таблица имеет столбец идентификатора, если он установлен. Если нет, то он не имеет столбца идентификатора.

Ответ 2

Я знаю это давным-давно, но я нашел это полезным

попробуйте следующее:

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

Ответ 3

Любой из нижеперечисленных запросов может использоваться для проверки наличия столбца Identity в таблице

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

Ответ 4

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

ObjectProperty доступен начиная с SQL Server 2008 Ссылка: OBJECTPROPERTY

Ответ 5

Я бы просто хотел добавить этот вариант, так как я думаю, что это самый простой

SELECT COLUMNPROPERTY(OBJECT_ID('TableName'),'ColumnName','isidentity')

Ответ 6

Один из способов сделать это - использовать хранимую процедуру sp_help. То есть:

sp_help MyTable

Это вернет DataSet, который будет иметь всю необходимую информацию в таблице. Существует конкретная таблица, в которой содержится информация о тождествах.

I.e:

Если он не содержит поля идентификации, столбец Identity будет указывать: "Нет идентификационного столбца".

Ответ 7

@Pranay: он сказал Compact Edition. Хранимые процедуры не поддерживаются, и нет sys.anything.

Это вызов:

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

Он вернет либо 1 (true), либо 0 (false).

Ответ 8

Этот запрос, который получает все имена таблиц, имена столбцов таблицы и is_identity или нет в выбранной базе данных

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

Ответ 9

Вы можете получить логическую форму 1 или 0, если текущая таблица имеет столбцы идентификаторов, используя эту

'SELECT Count(Column_ID) FROM sys.identity_columns WHERE OBJECT_NAME(object_id) = 'table_name''