powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Работа с системными таблицами
5 сообщений из 5, страница 1 из 1
Работа с системными таблицами
    #35894280
AnnaGL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, уважаемые господа.

Версия ASE 12.5.1

Каким образом через системные таблицы можно определить имя столбца первичного ключа пользовательской таблицы.
Известно имя пользовательской таблицы.

Заранее благодарю.
...
Рейтинг: 0 / 0
Работа с системными таблицами
    #35894376
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnnaGL пишет:
> Каким образом через системные таблицы можно определить имя столбца
> первичного ключа пользовательской таблицы.

Во-первых, имя СТОЛБЦОВ, а не столбца, их может быть много.
Во-вторых, это достаточно сложно делать.

Если есть возможность, используйте системные процедуры типа
sp_help или sp_helpindex или функции системного каталога из
API типа ODBC (такое есть точно в ODBC, в OpenClient точно нет,
а есть ли во всяких OLEDB / ADO - я не знаю).

Если это не подходит, то лучше всего опять -таки посмотреть в
sp_help и вычленить оттуда код, который возвращает нужные поля.

Если не получится, потом найду код (где-то был).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Работа с системными таблицами
    #35894389
AnnaGL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заранее известно, что это будет один столбец. и еще он IDENTITY.
...
Рейтинг: 0 / 0
Работа с системными таблицами
    #35894622
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnnaGL пишет:


Заранее известно, что это будет один столбец. и еще он IDENTITY.

Ну IDENTITY -то помечено явно.

syscolumns.status

tinyint


Bit 7 (value 128) indicates an identity column.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Работа с системными таблицами
    #35902235
AnnaGL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. сразу стало легче.
Получилось так:

через IDENTITY:

Код: plaintext
1.
2.
3.
4.
5.
declare @i varchar( 60 )
select @i = <имя таблицы>

select o.name,c.name from sysobjects o, syscolumns c  
where  o.name = @i and c.id = o.id and c.status =  128 
через определения первичного ключа, выдает первый столбец, который входит в определение первичного ключа:

Код: plaintext
1.
2.
select distinct o.name,i.name,c.name from sysobjects o, sysindexes i, syscolumns c, sysreferences r 
where  o.name = @i and c.id = o.id and i.id = o.id and i.indid = r.indexid and o.id = r.reftabid and c.colid = r.refkey1
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Работа с системными таблицами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]