Я хочу узнать, есть ли столбец идентификатора или нет. Стол мне неизвестен. Я не сделал структуру таблицы. Использование запроса?
Я использую Sql Server Compact Edition.
Я хочу узнать, есть ли столбец идентификатора или нет. Стол мне неизвестен. Я не сделал структуру таблицы. Использование запроса?
Я использую Sql Server Compact Edition.
Это запрос, который возвращает имя столбца идентификатора;
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
), тогда таблица имеет столбец идентификатора, если он установлен. Если нет, то он не имеет столбца идентификатора.
Я знаю это давным-давно, но я нашел это полезным
попробуйте следующее:
IF EXISTS (SELECT * from syscolumns where id = Object_ID(@TABLE_NAME) and colstat & 1 = 1)
BEGIN
-- Do your things
END
Любой из нижеперечисленных запросов может использоваться для проверки наличия столбца 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'
)
IF (OBJECTPROPERTY(OBJECT_ID('TABLE_NAME'), 'TableHasIdentity') = 1)
ObjectProperty
доступен начиная с SQL Server 2008 Ссылка: OBJECTPROPERTY
Я бы просто хотел добавить этот вариант, так как я думаю, что это самый простой
SELECT COLUMNPROPERTY(OBJECT_ID('TableName'),'ColumnName','isidentity')
Один из способов сделать это - использовать хранимую процедуру sp_help
. То есть:
sp_help MyTable
Это вернет DataSet, который будет иметь всю необходимую информацию в таблице. Существует конкретная таблица, в которой содержится информация о тождествах.
I.e:
Если он не содержит поля идентификации, столбец Identity будет указывать: "Нет идентификационного столбца".
@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).
Этот запрос, который получает все имена таблиц, имена столбцов таблицы и 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
Вы можете получить логическую форму 1 или 0, если текущая таблица имеет столбцы идентификаторов, используя эту
'SELECT Count(Column_ID) FROM sys.identity_columns WHERE OBJECT_NAME(object_id) = 'table_name''