powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / триггер заполняющий id (primary key) в оракловском стиле?
15 сообщений из 15, страница 1 из 1
триггер заполняющий id (primary key) в оракловском стиле?
    #39788036
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прежде всего 2 факта:
- c Ораклом работаю много лет
- про autoincrement-поля я знаю!!! (но у нас НЕ ХОТЯТ их использовать!)

нужет insert-триггер заполняющий id из секвенции по типу

Код: sql
1.
2.
3.
4.
5.
...
update ...
 SET mytbl.id = ISNULL( mytbl.id, ( select NEXT VALUE for my_seq_1 ) )
where .
...


есть ли у кого готовый примерчик. В гугле нахожу только INSTEAD OF варианты. Но в этой таблицы гигантское количество колонок. Не хотелось бы их всех в триггере перечислять! :-( Можно как то по-элегантнее!?
...
Рейтинг: 0 / 0
триггер заполняющий id (primary key) в оракловском стиле?
    #39788038
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnikПрежде всего 2 факта:
- c Ораклом работаю много лет
- про autoincrement-поля я знаю!!! (но у нас НЕ ХОТЯТ их использовать!)

нужет insert-триггер заполняющий id из секвенции по типу

Код: sql
1.
2.
3.
4.
5.
...
update ...
 SET mytbl.id = ISNULL( mytbl.id, ( select NEXT VALUE for my_seq_1 ) )
where .
...



есть ли у кого готовый примерчик. В гугле нахожу только INSTEAD OF варианты. Но в этой таблицы гигантское количество колонок. Не хотелось бы их всех в триггере перечислять! :-( Можно как то по-элегантнее!?


А почему триггер?
Чем дефолт не устраивает?
...
Рейтинг: 0 / 0
триггер заполняющий id (primary key) в оракловском стиле?
    #39788073
WarAnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnik,

SELECT из update уберите и будет работать
...
Рейтинг: 0 / 0
триггер заполняющий id (primary key) в оракловском стиле?
    #39788091
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarAntDBAshnik,

SELECT из update уберите и будет работатьНо, за нежелание перетащить мышкой список полей, придётся заплатить замедлением вставки в таблицу.
...
Рейтинг: 0 / 0
триггер заполняющий id (primary key) в оракловском стиле?
    #39788224
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnik,

Sequence же !
...
Рейтинг: 0 / 0
триггер заполняющий id (primary key) в оракловском стиле?
    #39788229
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnikиз секвенции по типуаа, "секвенции" это видимо и есть Sequence "по-ораколовски" :)
...
Рейтинг: 0 / 0
триггер заполняющий id (primary key) в оракловском стиле?
    #39788413
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnik,

тормознее будет. Вам нужен не триггер, а дефолт.
...
Рейтинг: 0 / 0
триггер заполняющий id (primary key) в оракловском стиле?
    #39788594
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgWarAntDBAshnik,

SELECT из update уберите и будет работатьНо, за нежелание перетащить мышкой список полей, придётся заплатить замедлением вставки в таблицу.

дело только в этом! Во первых это громоздко, (полей очень много, как сказал.), да и а потом при добавлении новых полей в таблицу, придётся каждый раз не забывать дополнить ими триггер! :-(
...
Рейтинг: 0 / 0
триггер заполняющий id (primary key) в оракловском стиле?
    #39788596
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarAntDBAshnik,

SELECT из update уберите и будет работать

ээээ, а как конкретно? Нельзя ли кусок кода, плиз? Да и потом это нужно будет завязать на массив inserted (чтоб не проходить по таблице каждый раз.) Может быть неизбежно придётся открывать курсор? (или есть как то по-элегантнее?) (плиз не в обиду, коллеги, но после ораклa читая инфу по MS-SQL мне не отделаться от чувства, что пересаживаюсь с мерса на жигули! ;-) Может по незнанию, пока? )
...
Рейтинг: 0 / 0
триггер заполняющий id (primary key) в оракловском стиле?
    #39788597
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
courtDBAshnikиз секвенции по типуаа, "секвенции" это видимо и есть Sequence "по-ораколовски" :)

ну да, Sequence разумеется, и эту возможность наше начальство "забанило", вопрос закрыт то есть, сорри! :-(
...
Рейтинг: 0 / 0
триггер заполняющий id (primary key) в оракловском стиле?
    #39788681
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnikпосле ораклa читая инфу по MS-SQL мне не отделаться от чувства, что пересаживаюсь с мерса на жигули! ;-) Может по незнанию, пока? )Да, по незнанию; у вашего начальства идея "сделать на MSSQL как в оракле, только хуже".
Ну вот оно и получается хуже
У MSSQL другая идеология, более современная, он всё таки появился позже оракла, и бальше отошёл от кобола и файловых БД. Поэтому там нет позывов в любой вычислении использовать курсор, циклы, триггер на строку и т.д. Там оперируют множествами целиком, на языке SQL.
DBAshnikДа и потом это нужно будет завязать на массив inserted (чтоб не проходить по таблице каждый раз.) Может быть неизбежно придётся открывать курсор? (или есть как то по-элегантнее?)Вообще 2 множества цепляются друг с другом оператором JOIN :-)

Т.е. обновляете поле id в таблице mytbl, джойня её с таблицей inserted

Ещё одна тонкость в том, что для джойна нужно идентифицировать запись - надеюсь, id - это не PK? :-)

Неважно, курсором, или джойном, в общем, как угодно, но в любом случае вы либо каждый раз сканируете всю таблицу, либо обеспечиваете возможность указать нужные записи, то есть делаете для этого уникальное поле.
Можно для этого, например, сделать дополнительное поле identity

DBAshnikну да, Sequence разумеется, и эту возможность наше начальство " забанило "Чего? Изначально же задача стоит в том, что бы вместо нормальной IDENTITY использовать Sequence, как в оракле???
...
Рейтинг: 0 / 0
триггер заполняющий id (primary key) в оракловском стиле?
    #39788905
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
Ещё одна тонкость в том, что для джойна нужно идентифицировать запись - надеюсь, id - это не PK? :-)

так в этом то все и "гвозди", что id это PK ;-)
Я ж и топик так назвал: "в оракловском стиле" )))
...
Рейтинг: 0 / 0
триггер заполняющий id (primary key) в оракловском стиле?
    #39788907
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg

DBAshnikну да, Sequence разумеется, и эту возможность наше начальство " забанило "Чего? Изначально же задача стоит в том, что бы вместо нормальной IDENTITY использовать Sequence, как в оракле???

я плохо сформулировал, сорри. Забанило возможность использования нормальной IDENTITY. (т.е. автоинкрементного id/pk)
...
Рейтинг: 0 / 0
триггер заполняющий id (primary key) в оракловском стиле?
    #39788910
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnikalexeyvg

пропущено...
Чего? Изначально же задача стоит в том, что бы вместо нормальной IDENTITY использовать Sequence, как в оракле???

я плохо сформулировал, сорри. Забанило возможность использования нормальной IDENTITY. (т.е. автоинкрементного id/pk)
нельзя сказать что это не правильно, хотя "глобально запрещать" в любом случае нелогично
...
Рейтинг: 0 / 0
триггер заполняющий id (primary key) в оракловском стиле?
    #39789271
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnikтак в этом то все и "гвозди", что id это PK ;-)Тогда, если обязательно в триггере, то это должен быть триггер instead of insert, и придётся перечислять все поля (или делать динамику, что вообще абсурд).
DBAshnikя плохо сформулировал, сорри. Забанило возможность использования нормальной IDENTITY. (т.е. автоинкрементного id/pk)Можно сделать сиквенс в default

Но это если необязательно делать в триггере.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / триггер заполняющий id (primary key) в оракловском стиле?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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