powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / возможно ли загнать Case/IF-логику (оракловского типа) в FBI-индекс(UNIQUE)?
14 сообщений из 14, страница 1 из 1
возможно ли загнать Case/IF-логику (оракловского типа) в FBI-индекс(UNIQUE)?
    #39798984
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на оракле есть такое:

Код: plsql
1.
CREATE UNIQUE INDEX UIDX_START_SASTAT ON START_SAF( CASE STATUS WHEN 'NEW' THEN STATUS WHEN 'PROCESS' THEN STATUS ELSE NULL END );



можно ли перевести это на MS SQL (желательно без написания внешней функции)?
Cпасибо!
...
Рейтинг: 0 / 0
возможно ли загнать Case/IF-логику (оракловского типа) в FBI-индекс(UNIQUE)?
    #39798988
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnik, читайте про фильтрованные индексы. И помните - в ms sql server-e значения null попадают в индекс наравне с остальными, в отличие от ораклового поведения, где bull/значения в индексе не хранятся (bitmap и индекс табличного кластера - не в счёт)
...
Рейтинг: 0 / 0
возможно ли загнать Case/IF-логику (оракловского типа) в FBI-индекс(UNIQUE)?
    #39798989
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
возможно ли загнать Case/IF-логику (оракловского типа) в FBI-индекс(UNIQUE)?
    #39799274
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина АннаDBAshnik, читайте про фильтрованные индексы. И помните - в ms sql server-e значения null попадают в индекс наравне с остальными, в отличие от ораклового поведения, где bull/значения в индексе не хранятся (bitmap и индекс табличного кластера - не в счёт)

таблица крохотная, индекс создаётся не ради производительности тут, а ради unique-constraint! (который в Оракл создаётся автоматичесики при создании Unique-index-a! )
Cпасибо!
...
Рейтинг: 0 / 0
возможно ли загнать Case/IF-логику (оракловского типа) в FBI-индекс(UNIQUE)?
    #39799281
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnik,
авторндекс создаётся не ради производительности тут, а ради unique-constraint! (который в Оракл создаётся автоматичесики при создании Unique-index-a! )
вас ждёт ещё столько нового....
...
Рейтинг: 0 / 0
возможно ли загнать Case/IF-логику (оракловского типа) в FBI-индекс(UNIQUE)?
    #39799360
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
возможно ли загнать Case/IF-логику (оракловского типа) в FBI-индекс(UNIQUE)?
    #39799413
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnikЩукина АннаDBAshnik, читайте про фильтрованные индексы. И помните - в ms sql server-e значения null попадают в индекс наравне с остальными, в отличие от ораклового поведения, где bull/значения в индексе не хранятся (bitmap и индекс табличного кластера - не в счёт)

таблица крохотная, индекс создаётся не ради производительности тут, а ради unique-constraint! (который в Оракл создаётся автоматичесики при создании Unique-index-a! )
Cпасибо!делается не только проверка уникальности, но и проверка значений?
Тогда проще это написать как простой уникальный индекс + check
...
Рейтинг: 0 / 0
возможно ли загнать Case/IF-логику (оракловского типа) в FBI-индекс(UNIQUE)?
    #39799416
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgDBAshnikпропущено...


таблица крохотная, индекс создаётся не ради производительности тут, а ради unique-constraint! (который в Оракл создаётся автоматичесики при создании Unique-index-a! )
Cпасибо!делается не только проверка уникальности, но и проверка значений?
Тогда проще это написать как простой уникальный индекс + checkХотя нет, у вас сложнее.
У вас в таблице допустимо до трёх значений, по одному 'NEW' и 'PROCESS', плюс ещё произвольное или NULL
...
Рейтинг: 0 / 0
возможно ли загнать Case/IF-логику (оракловского типа) в FBI-индекс(UNIQUE)?
    #39799417
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarikNavyDBAshnik,

https://docs.microsoft.com/ru-ru/sql/relational-databases/tables/create-unique-constraints?view=sql-server-2017

спасибо, только что мне даёт эта ссылка то? Возможности сделать (u-constraint/u-index) как в Оракл, т.е. чтоб исключить повторение конкретных значений, а других - нет, я пока не вижу!
...
Рейтинг: 0 / 0
возможно ли загнать Case/IF-логику (оракловского типа) в FBI-индекс(UNIQUE)?
    #39799420
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgalexeyvgпропущено...
делается не только проверка уникальности, но и проверка значений?
Тогда проще это написать как простой уникальный индекс + checkХотя нет, у вас сложнее.
У вас в таблице допустимо до трёх значений, по одному 'NEW' и 'PROCESS', плюс ещё произвольное или NULL

да, допустимо _только_ по одному значению 'NEW' и 'PROCESS'. Остальные (как NULL так и прочие!) могут повторяться!
Или, скажите, я слишком многого хочу за меньшие деньги? ;-))) ( если сравнивать стоимости лицензий ORA vs MS SQL )
...
Рейтинг: 0 / 0
возможно ли загнать Case/IF-логику (оракловского типа) в FBI-индекс(UNIQUE)?
    #39799454
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnikИли, скажите, я слишком многого хочу за меньшие деньги?Вы просто хотите, чтоб было так же как в Oracle. А это невозмоно.
Код: sql
1.
CREATE UNIQUE INDEX UIDX_START_SASTAT ON START_SAF(STATUS) WHERE STATUS IN ('NEW', 'PROCESS');
...
Рейтинг: 0 / 0
возможно ли загнать Case/IF-логику (оракловского типа) в FBI-индекс(UNIQUE)?
    #39799479
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmВы просто хотите, чтоб было так же как в Oracle. А это невозмоно.
Код: sql
1.
CREATE UNIQUE INDEX UIDX_START_SASTAT ON START_SAF(STATUS) WHERE STATUS IN ('NEW', 'PROCESS');

Вас DBAshnik может неправильно понять.
Возможно, только записывается проще (как вы написали).
...
Рейтинг: 0 / 0
возможно ли загнать Case/IF-логику (оракловского типа) в FBI-индекс(UNIQUE)?
    #39799506
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmDBAshnikИли, скажите, я слишком многого хочу за меньшие деньги?Вы просто хотите, чтоб было так же как в Oracle. А это невозмоно.
Код: sql
1.
CREATE UNIQUE INDEX UIDX_START_SASTAT ON START_SAF(STATUS) WHERE STATUS IN ('NEW', 'PROCESS');



вау! Так всё оказывается возможно и даже просто! Только синтаксис отличается! Спасибо огромное!!!
...
Рейтинг: 0 / 0
возможно ли загнать Case/IF-логику (оракловского типа) в FBI-индекс(UNIQUE)?
    #39799507
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgВозможно, только записывается проще (как вы написали).

так точно! :-)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / возможно ли загнать Case/IF-логику (оракловского типа) в FBI-индекс(UNIQUE)?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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