Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Узнать имя автоинкрементного поля  [new]
Алексаша
Member

Откуда: Левый берег
Сообщений: 415
Здравствуйте.

На входе Имена таблиц с указанием схемы типа 'log.Table' или 'dbo.Table'. Как узнать имя автоинкрементного поля ?
6 дек 12, 13:06    [13587588]     Ответить | Цитировать Сообщить модератору
 Re: Узнать имя автоинкрементного поля  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
COLUMNPROPERTY
6 дек 12, 13:08    [13587617]     Ответить | Цитировать Сообщить модератору
 Re: Узнать имя автоинкрементного поля  [new]
Spinifex
Member

Откуда:
Сообщений: 55
Алексаша, с помощь sys.identity_columns можно:

select object_name(object_id) as tablename, * from sys.identity_columns
6 дек 12, 13:12    [13587650]     Ответить | Цитировать Сообщить модератору
 Re: Узнать имя автоинкрементного поля  [new]
Алексаша
Member

Откуда: Левый берег
Сообщений: 415
invm
COLUMNPROPERTY


SELECT @AutoIDField = COLUMN_
                   NAME FROM INFORMATION_SCHEMA.COLUMNS
                   WHERE COLUMNPROPERTY(object_id(TABLE_NAME), COLUMN_NAME, 'IsIdentity') = 1 
                    AND TABLE_NAME = @TableName
                     AND TABLE_SHEMA = @SHEMA  


такой код работает в моем случае если таблица принадлежит схеме dbo а вот с др. схемой не получается. Что нужно исправить ?
6 дек 12, 13:15    [13587681]     Ответить | Цитировать Сообщить модератору
 Re: Узнать имя автоинкрементного поля  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Алексаша,
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMNPROPERTY(OBJECT_ID(QUOTENAME(TABLE_SCHEMA)+N'.'+QUOTENAME(TABLE_NAME)),COLUMN_NAME,'IsIdentity')=1
  AND TABLE_NAME=@TableName
  AND TABLE_SCHEMA=@SCHEMA;
???
6 дек 12, 13:24    [13587753]     Ответить | Цитировать Сообщить модератору
 Re: Узнать имя автоинкрементного поля  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
SELECT @AutoIDField = COLUMN_
                   NAME FROM INFORMATION_SCHEMA.COLUMNS
                   WHERE COLUMNPROPERTY(object_id(quotename(TABLE_SCHEMA) + '.' + quotename(TABLE_NAME), 'U'), quotename(COLUMN_NAME), 'IsIdentity') = 1 
                    AND TABLE_NAME = @TableName
                     AND TABLE_SHEMA = @SHEMA  
6 дек 12, 13:25    [13587763]     Ответить | Цитировать Сообщить модератору
 Re: Узнать имя автоинкрементного поля  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Алексаша
object_id(TABLE_NAME)


такой код работает в моем случае если таблица принадлежит схеме dbo а вот с др. схемой не получается. Что нужно исправить ?

object_id(QUOTENAME(TABLE_SCHEMA) + N'.' + QUOTENAME(TABLE_NAME))
6 дек 12, 13:26    [13587775]     Ответить | Цитировать Сообщить модератору
 Re: Узнать имя автоинкрементного поля  [new]
Алексаша
Member

Откуда: Левый берег
Сообщений: 415
Ребята, спасибо ... :)
6 дек 12, 13:32    [13587823]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить