powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не удается написать триггер
12 сообщений из 87, страница 4 из 4
не удается написать триггер
    #39576166
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CammomileАпдейт это инструкция для сервера, она не должна гарантировать никакой очередности.
Это именно то, что и я утверждаю.

CammomileПричем тут апдейты?
Обсуждается мое утверждение:
ptr128Обновление нескольких записей одной таблицы в произвольном порядке в пределах одной транзакции гарантировано приводит к дидлоку. Вопрос только в количестве записей, количестве пользователей и во времени, когда это произойдет.
...
Рейтинг: 0 / 0
не удается написать триггер
    #39576172
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ptr128CammomileАпдейт это инструкция для сервера, она не должна гарантировать никакой очередности.
Это именно то, что и я утверждаю.

CammomileПричем тут апдейты?
Обсуждается мое утверждение:
ptr128Обновление нескольких записей одной таблицы в произвольном порядке в пределах одной транзакции гарантировано приводит к дидлоку. Вопрос только в количестве записей, количестве пользователей и во времени, когда это произойдет.
так индекс же ответ на ваш идиотский вопрос

и чиво он "дидлок" то?


Модератор: TaPaK блокируется на 3 дня за окорбление. Остыть
...
Рейтинг: 0 / 0
не удается написать триггер
    #39576175
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, о логической связности...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE TRIGGER ...1 ON ... AFTER UPDATE
AS
BEGIN
  INSERT
  INTO
     dummy
  SELECT 
     ...
  FROM
    inserted
  ;
END
GO
CREATE TRIGGER ...2 ON ... AFTER UPDATE
AS
BEGIN
  DELETE
     dd
  FROM
     inserted ii
     INNER JOIN dummy dd ON (...)
  ;
END
GO
...
Рейтинг: 0 / 0
не удается написать триггер
    #39576184
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руслан Дамирович,

и?
...
Рейтинг: 0 / 0
не удается написать триггер
    #39576232
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ptr128Вперед, расскажите, как можно добиться строго определнной сортировки при UPDATE в общем случае Специально для неумеющих думать и считающих, что знают они больше всех:
Код: sql
1.
2.
3.
4.
5.
update t
 set ...
from
 (select top (cast(0x7fffffff as int)) TargetKey, SourceData, ... from Source where ... order by TargetKey) s inner loop/merge/hash join
 Target t on t.KeyField = s.KeyField


ptr128Или давйте хотя бы пример: 21063123 Можете еще ...дцать пунктов туда добавить - в итоге все равно нужна сортировка по ключу целевой таблицы.
И, к сведению, чтобы, если уж очень приспичило воевать с потенциальными дедлоками, сериализовать выполнение какой-нибудь инструкции в многопользовательском окружении, совершенно не обязательно блокировать таблицу или переходить на serializable. И (о Боже!) это можно делать и в триггере и даже не придется сериализовать весь триггер.
ptr128А не можете, так не мешайте общаться.С каких пор у вас появилось право указывать мне что делать?
ptr128К сожалению, в Ваших бреднях очень сложно разобраться.Взаимно.
ptr128Подробно алгоритм описан тут: 21062720
Ваши претензии?У меня претензий нет. Претензии будут у ваших заказчиков.
А вам и вашим смеющимся коллегам было бы неплохо освежить в памяти для чего нужны транзакции.
Ну и заодно оценить какую дополнительную нагрузку дают ваши построчные транзакции. Затем оценить вероятность дедлоков и величину ущерба производительности от них.

И я даже не буду начинать беседу про работу этого алгоритма на стороне сервера, особенно в случае, когда таки придется проводить несколько документов в одной транзакции. Или просто провести документ во внешней транзакции.
...
Рейтинг: 0 / 0
не удается написать триггер
    #39576237
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДедушкаCammomileЭто же безумие какое-то? Кто вообще автора учил объекты БД именовать кирилицей?и какой язык является "провославным" для именования объектов БД с вашей точки зрения?

Жёстко-скреповый:

set Ко лл ичество_оставшегося_материала = Ко лл ичество_оставшегося_материала - @kol
...
Рейтинг: 0 / 0
не удается написать триггер
    #39576247
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДедушкаCammomileЭто же безумие какое-то? Кто вообще автора учил объекты БД именовать кирилицей?и какой язык является "провославным" для именования объектов БД с вашей точки зрения?


TotalAmount, base_price: хорошо.
cena_po_dogovoru, Naimenovanie: плоховато.
ИдДокумента: дно.
ID_Клиента: ниже дна.
...
Рейтинг: 0 / 0
не удается написать триггер
    #39576272
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmptr128Вперед, расскажите, как можно добиться строго определнной сортировки при UPDATE в общем случае Специально для неумеющих думать и считающих, что знают они больше всех:
И с чего это Вы решили, что это общий случай?
Потому "что не умеете думать и считаете, что знаете больше всех"? )))
Если бы Вы, хотя бы, удосужились прочить 21063123 , где приведен очень упрощенный пример постинга BOM, без вложенных BOM, без трудозатрат, без резервирования оборудования и участков - просто тупой голый BOM(!) - то уже про общий случай ну провозглашали )))

invmptr128Подробно алгоритм описан тут: 21062720
Ваши претензии?У меня претензий нет. Претензии будут у ваших заказчиков.
Клиент слился, заглянул в свой "хрустальный шар" и стал ванговать )))
...
Рейтинг: 0 / 0
не удается написать триггер
    #39576299
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ptr128И с чего это Вы решили, что это общий случай?Потому что это общий случай как обеспечить определенный порядок обновления. А все ваши ВОМы и т.п. - частный.
И если вы не в состоянии привести общий к своему частному, то это сугубо ваши проблемы.
ptr128Клиент слился, заглянул в свой "хрустальный шар" и стал ванговать )))Детский сад...
Правда здорово вырывать фразы из контекста и игнорировать неудобные вопросы?
Ведь таким образом можно скрыть собственные пробелы в знаниях матчасти и не придется признавать свое решение бредовым...
...
Рейтинг: 0 / 0
не удается написать триггер
    #39576326
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmptr128И с чего это Вы решили, что это общий случай?Потому что это общий случай
Вам самому не смешно? Перечитайте Ваш аргумент )))


invmptr128Подробно алгоритм описан тут: 21062720
Ваши претензии?
У меня претензий нет.

И что это, как не "детский сад" и "игнорирование неудобных вопросов"?
Вы "таким образом скрываете собственные пробелы в знаниях матчасти", чтобы не "пришлось признавать свое решение бредовым"?
...
Рейтинг: 0 / 0
не удается написать триггер
    #39576345
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ptr128Вам самому не смешно?Уже да. Вы весьма забавны.

На все ваши вопросы ответы были даны. В том числе на основной - как задать порядок обновления.
Если не в состоянии их осмыслить, то это сугубо ваша проблема.
На мои (и не только мои) вопросы вразумительных ответов не было. Только стеб и надувание щек.

Та что более не вижу смысла тратить на вас время.
...
Рейтинг: 0 / 0
не удается написать триггер
    #39576374
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm[
Код: sql
1.
2.
3.
4.
5.
update t
 set ...
from
 (select top (cast(0x7fffffff as int)) TargetKey, SourceData, ... from Source where ... order by TargetKey) s inner loop/merge/hash join
 Target t on t.KeyField = s.KeyField



На всякий случай, для тех будет потом перечитывать этот топик.
Автор совершенно забыл о трех вещах. Его решение может быть работоспособно:
1. только если таблица Target отсутствует в подзапросе (поэтому я и просил его посмотреть на постинг BOM - deadlock будет не X-X/U, а S-X/U)
2. только если max degree of parallelism = 1 (параллельное выполнение запроса нарушит сортировку)
3. только если результат подзапроса полностью помещается в оперативной памяти (если хотя бы одна страница уйдет на диск, то ее сервер достанет последней, что нарушит сортировку)
...
Рейтинг: 0 / 0
12 сообщений из 87, страница 4 из 4
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не удается написать триггер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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