Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нумерация документов / 25 сообщений из 41, страница 1 из 2
02.06.2018, 13:37
    #39654343
Васелина
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
Как правильно правильно реализовать логику.

Есть документы. Номер документа увеличивается в зависимости от номера склада. У каждого склада своя нумерация документов.
...
Рейтинг: 0 / 0
02.06.2018, 14:30
    #39654348
Васелина
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
Как правильнее использовать триггер, скалярную функцию или что то другое?
...
Рейтинг: 0 / 0
02.06.2018, 14:35
    #39654349
Васелина
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
или хранимую процедуру
...
Рейтинг: 0 / 0
03.06.2018, 11:31
    #39654454
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
ВаселинаНомер документа увеличивается в зависимости от номера склада.
У номера документа есть префикс, зависящий от номера склада?
...
Рейтинг: 0 / 0
03.06.2018, 13:04
    #39654476
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
...
Рейтинг: 0 / 0
04.06.2018, 00:44
    #39654610
SIMPLicity_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
...
Рейтинг: 0 / 0
04.06.2018, 08:56
    #39654670
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
SIMPLicity_iap https://social.technet.microsoft.com/wiki/ru-ru/contents/articles/10056.microsoft-sql-server.aspx

пи#дец, простите... Это восхищение или критика? :-)

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

Конечно, если у ТС 10 пользователей, можно просто сделать таблицу счётчиков, и в процедуре или триггере присваивать новый номер.
...
Рейтинг: 0 / 0
04.06.2018, 10:24
    #39654718
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
SIMPLicity_iap https://social.technet.microsoft.com/wiki/ru-ru/contents/articles/10056.microsoft-sql-server.aspx

пи#дец, простите... В многопользовательской среде вообще всё непросто...
...
Рейтинг: 0 / 0
04.06.2018, 11:17
    #39654743
d7i
d7i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
можно просто сделать таблицу счётчиков, и в процедуре или триггере присваивать новый номер.
Именно сделать таблицу счетчиков и в ТРИГГЕРЕ присваивать новый номер ПРИ СОЗДАНИИ НОВОГО ДОКУМЕНТА.

Я этот метод использую почти 20 лет и никаких проблем.
...
Рейтинг: 0 / 0
04.06.2018, 11:25
    #39654751
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
d7i можно просто сделать таблицу счётчиков, и в процедуре или триггере присваивать новый номер.
Именно сделать таблицу счетчиков и в ТРИГГЕРЕ присваивать новый номер ПРИ СОЗДАНИИ НОВОГО ДОКУМЕНТА.

Я этот метод использую почти 20 лет и никаких проблем.
ох эти романтики... 20 лет ничему их жизнь не учит

ps капс это важность ваше подчёркивает?
...
Рейтинг: 0 / 0
04.06.2018, 11:25
    #39654752
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
d7i можно просто сделать таблицу счётчиков, и в процедуре или триггере присваивать новый номер.
Именно сделать таблицу счетчиков и в ТРИГГЕРЕ присваивать новый номер ПРИ СОЗДАНИИ НОВОГО ДОКУМЕНТА.

Я этот метод использую почти 20 лет и никаких проблем.Я тоже. Но при этом я прекрасно понимаю, что это говнокод.
Потому что полюбому надо SELECTом получить текущий номер из таблицы, потом UPDATEом его изменить, да ещё в другую таблицу вставить.
Если не блокировать таблицы в монопольном режиме доступа, то рано или поздно возникнут накладки в нумерации.
Особенно если пользователей несколько сотен или тысяч.
В то же время такой уровень изоляции транзакции приведёт к катастрафическому падению производительности.
...
Рейтинг: 0 / 0
04.06.2018, 11:56
    #39654774
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
iapЕсли не блокировать таблицы в монопольном режиме доступа, то рано или поздно возникнут накладки в нумерации.Таблицы-то зачем? Достаточно строку в таблице, хранящей счетчики.
...
Рейтинг: 0 / 0
04.06.2018, 12:03
    #39654776
SIMPLicity_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов


PS Мне всегда хватало identity
PPS Для всего остального я мутил свои счётчики ... наверное я хреновый проектировщик
...
Рейтинг: 0 / 0
04.06.2018, 12:12
    #39654787
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
SIMPLicity_,

identity не прикрутишь для разнородных номеров ака "Номер документа увеличивается в зависимости от номера склада"

а так да, таблица со складами, масками и последним значением, при добавление блокировать вычитку строки счётчика и увеличивать при успешном окончании или просто увеличивать и забить на стабильный +1(чаще всего требование ничем не аргументируется кроме как "хочу и всё тут") Из радостей - блокировка строки счётчика до окончания вставки вашего документа, или если отказаться от +1 то только на момент генерации номера, а всавилось или нет дело не обяхательное
...
Рейтинг: 0 / 0
04.06.2018, 12:20
    #39654795
SIMPLicity_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
TaPaKSIMPLicity_,

identity не прикрутишь для разнородных номеров ака "Номер документа увеличивается в зависимости от номера склада"

а так да, таблица со складами, масками и последним значением, при добавление блокировать вычитку строки счётчика и увеличивать при успешном окончании или просто увеличивать и забить на стабильный +1(чаще всего требование ничем не аргументируется кроме как "хочу и всё тут") Из радостей - блокировка строки счётчика до окончания вставки вашего документа, или если отказаться от +1 то только на момент генерации номера, а всавилось или нет дело не обязательное

Да, наверное.

... и вариант invm (с отдельной таблицей) мне нравится больше... в силу снижения нагрузок. Особенно при распределённых системах.

Может быть, для этих случаев сиквенсы - "луч добра", но...
...
Рейтинг: 0 / 0
04.06.2018, 12:22
    #39654796
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
SIMPLicity_TaPaKSIMPLicity_,

identity не прикрутишь для разнородных номеров ака "Номер документа увеличивается в зависимости от номера склада"

а так да, таблица со складами, масками и последним значением, при добавление блокировать вычитку строки счётчика и увеличивать при успешном окончании или просто увеличивать и забить на стабильный +1(чаще всего требование ничем не аргументируется кроме как "хочу и всё тут") Из радостей - блокировка строки счётчика до окончания вставки вашего документа, или если отказаться от +1 то только на момент генерации номера, а всавилось или нет дело не обязательное

Да, наверное.

... и вариант invm (с отдельной таблицей) мне нравится больше... в силу снижения нагрузок. Особенно при распределённых системах.

Может быть, для этих случаев сиквенсы - "луч добра", но...
ну в общем это и есть вариант с отдельной таблицей
...
Рейтинг: 0 / 0
04.06.2018, 12:30
    #39654808
SIMPLicity_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
Васелинаили хранимую процедуру

Возвращаясь к теме.
Если добавление идёт через единственную хранимую процедуру,- то лучше (на мой взгляд) логику в ней реализовать. И избегать вставок "кроме как через неё".

Если добавляется абы как (где-то документы добавляются хранимкой, а где-то запросом от клиентского приложения) , - то будет лучше триггером. Это плохая практика, но сработает.

Жизнь можно облегчить грамотно сформировав индекс. Я бы, наверное, построил НЕкластерный индекс по склад - номер. Кластерный (такой же) был бы идеален, но на больших данных частых вставках, подозреваю, он будет слишком часто обновляться; а в том как работает механизм перестроения кластерного индекса я не сильно разбираюсь ...

Если я где-то не прав (по теме топика) - поправьте....
...
Рейтинг: 0 / 0
04.06.2018, 12:33
    #39654810
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
SIMPLicity_,

авторЖизнь можно облегчить грамотно сформировав индекс. Я бы, наверное, построил НЕкластерный индекс по склад - номер. Кластерный (такой же) был бы идеален, но на больших данных частых вставках, подозреваю, он будет слишком часто обновляться; а в том как работает механизм перестроения кластерного индекса я не сильно разбираюсь ...

наша песня хороша, начинай сначала
...
Рейтинг: 0 / 0
04.06.2018, 13:43
    #39654866
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
d7iЯ этот метод использую почти 20 лет и никаких проблем.Первое же нагруженное приложение - и проблемы будут.
...
Рейтинг: 0 / 0
04.06.2018, 13:54
    #39654877
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
SIMPLicity_Я бы, наверное, построил НЕкластерный индекс по склад - номер. Кластерный (такой же) был бы идеален, но на больших данных частых вставках, подозреваю, он будет слишком часто обновляться; а в том как работает механизм перестроения кластерного индекса я не сильно разбираюсь ...

А как работает "механизм перестроения НЕкластерного индекса" вы разбираетесь?
НЕкластерный не нужно обновлять?
А после обновления НЕкластерного не нужно обновлять кластерный/кучу?
...
Рейтинг: 0 / 0
04.06.2018, 14:18
    #39654890
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
Попроектирую и я тоже...

1. Идентити - как главный номер и суррогатный ключ.
2. Строковое поле, куда можно вводить любой номер. Можно генерировать автоматом в процедуре (типа, нет номера - генерируем, причем совсем не обязательно в момент ввода документа - можно постобработкой) или вводить/менять ручками - как ужо сделаете.
...
Рейтинг: 0 / 0
04.06.2018, 14:27
    #39654896
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
ВаселинаКак правильнее использовать триггер, скалярную функцию или что то другое?
Правильнее всего использовать бумажный "журнал регистрации документов", который и будет выполнять задачу сериализации при генерации номеров. На каждом складе - свой.
...
Рейтинг: 0 / 0
04.06.2018, 14:52
    #39654918
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
SIMPLicity_Если добавление идёт через единственную хранимую процедуру,- то лучше (на мой взгляд) логику в ней реализовать. И избегать вставок "кроме как через неё".Кто мешает запустить процедуру одновременно в десяти коннектах?invmiapЕсли не блокировать таблицы в монопольном режиме доступа, то рано или поздно возникнут накладки в нумерации.Таблицы-то зачем? Достаточно строку в таблице, хранящей счетчики.Какая разница, если в любом случае речь об общем ресурсе, к которому необходимо организовать последовательный доступ?
...
Рейтинг: 0 / 0
04.06.2018, 15:01
    #39654927
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
iapКакая разница, если в любом случае речь об общем ресурсе, к которому необходимо организовать последовательный доступ?Разница большая, - потому что общий ресурс не таблица, а строка этой таблицы.
...
Рейтинг: 0 / 0
04.06.2018, 15:05
    #39654931
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация документов
invmiapКакая разница, если в любом случае речь об общем ресурсе, к которому необходимо организовать последовательный доступ?Разница большая, - потому что общий ресурс не таблица, а строка этой таблицы.Всё равно же надо ждать, пока он освободится!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нумерация документов / 25 сообщений из 41, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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