Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Определение наличия индекса / 8 сообщений из 8, страница 1 из 1
21.07.2005, 15:11
    #33178260
g613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение наличия индекса
День добрый (или нет кому как ),

ASE 12.5.1
Linux

Есть таблица с несколькими индексами:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
[ 878 ] billing.bill_2. 1 > sp__helpindex NasPortBaseMap;
   INDEX KEY:     c = clustered            u = unique
                  a = allow dup row        s = suspect
                  i = ignore dup key

 Name                           c u i a s List of Index Keys
    ------------------------------ - - - - - -----------------------------------
 NasPortBaseMap.NasPortBas_1391   Y       ID
( Y стоит под u )
тоесть индекс вроде как не кластерный.

есть код:
if not exists(select id from sysindexes where id = object_id('NasPortBaseMap') and indid=1)
execute('ALTER TABLE NasPortBaseMap ADD PRIMARY KEY (ID)')

который вроде как проверяет наличие индекса и причем именно кластерного ( indid ),
не находя его,пытается создать заново и отваливатеся с ошибкой.

Вопрос собственно ПОЧЕМУ... индекс не кластерный, и корректен ли данный код ля проверки первичного ключа...
...
Рейтинг: 0 / 0
21.07.2005, 16:35
    #33178542
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение наличия индекса
g613
if not exists(select id from sysindexes where id = object_id('NasPortBaseMap') and indid=1)

который вроде как проверяет наличие индекса и причем именно кластерного ( indid ),
не находя его,пытается создать заново и отваливатеся с ошибкой.

Вопрос собственно ПОЧЕМУ... индекс не кластерный, и корректен ли данный код ля проверки первичного ключа...

Некорректен. Начиная с 11.9 кластерный индекс может иметь любой идентификатор indid, отличный от 1. Это наблюдается для DOL-таблиц. Для APL ваша проверка прошла бы (правда не знаю схему блокирования вашей таблицы). Кластерный индекс можно вычислить по новы статусам, см. документацию:

Table 55-2: Status bits in the sysindexes table status2 column
...
512
0x0200
Table is a data-only-locked table with a clustered index

Кроме того, подозреваю что sp__helpindex , которым вы пользуетесь, также устарел, насколько я подозреваю этот набор процедур никто еще не исправил
под DOL. Так что пользуйтесь родными sp_help sp_helpindex.
...
Рейтинг: 0 / 0
21.07.2005, 16:40
    #33178566
sybdba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение наличия индекса
с какой ошибкой то отваливается ?

а может создавать не primary key , а тупо create clustered index ...?
...
Рейтинг: 0 / 0
21.07.2005, 17:01
    #33178631
g613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение наличия индекса
MasterZiv g613
if not exists(select id from sysindexes where id = object_id('NasPortBaseMap') and indid=1)

который вроде как проверяет наличие индекса и причем именно кластерного ( indid ),
не находя его,пытается создать заново и отваливатеся с ошибкой.

Вопрос собственно ПОЧЕМУ... индекс не кластерный, и корректен ли данный код ля проверки первичного ключа...

Некорректен. Начиная с 11.9 кластерный индекс может иметь любой идентификатор indid, отличный от 1. Это наблюдается для DOL-таблиц. Для APL ваша проверка прошла бы (правда не знаю схему блокирования вашей таблицы). Кластерный индекс можно вычислить по новы статусам, см. документацию:

Table 55-2: Status bits in the sysindexes table status2 column
...
512
0x0200
Table is a data-only-locked table with a clustered index

Кроме того, подозреваю что sp__helpindex , которым вы пользуетесь, также устарел, насколько я подозреваю этот набор процедур никто еще не исправил
под DOL. Так что пользуйтесь родными sp_help sp_helpindex.

сенькс sp_index говорит именно clustered...
...
Рейтинг: 0 / 0
21.07.2005, 17:04
    #33178642
g613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение наличия индекса
sybdbaс какой ошибкой то отваливается ?

а может создавать не primary key , а тупо create clustered index ...?

да нет про clusterd это был мой вывод из кода `select ... sysindexes`

Ситуация такая прислали апдейт там вышепреведенным кодом проверялось наличие первичного ключа в таблице по результатам пытались создать первичный ключ. Тоесть ключ был но результат той проверки говорил об обратном, в результате чего была попытка создать второй раз primary key на этом собственно все и останавливалось...
...
Рейтинг: 0 / 0
21.07.2005, 17:13
    #33178670
g613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение наличия индекса
g613

сенькс sp_index говорит именно clustered...

sp_helpindex имелось в виду
...
Рейтинг: 0 / 0
22.07.2005, 11:39
    #33179708
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение наличия индекса
И кто ж вам такие update-ы шлет ? Вы там им сообщите, что они, того, неправы. Если DOL -таблицы используют - это же DOL была ?
...
Рейтинг: 0 / 0
22.07.2005, 11:43
    #33179735
g613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение наличия индекса
MasterZivИ кто ж вам такие update-ы шлет ? Вы там им сообщите, что они, того, неправы. Если DOL -таблицы используют - это же DOL была ?

сообщить то сообщили, только польза не знай будет или нет...
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Определение наличия индекса / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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