|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Доброе утро, коллеги! Помогите пожалуйста развеять сомнения. Есть такой прекрасный код Код: 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. 25. 26. 27. 28. 29. 30.
1. Правильно ли я понимаю, что товарищ хочет получить последовательную нумерацию DocNum в пределах AppCode? Может ещё что-то? 2. Можно ли такую конструкцию считать безопасной для условий - update без where - один единственный кластерный индекс как указано в схеме Или есть у такого синтаксиса "подводные камни"? Код не мой, думаю "бодаться" с партнёрами из-за него или пусть остаётся.. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 09:22 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Zulus Правильно ли я понимаю, что товарищ хочет получить последовательную нумерацию DocNum в пределах AppCode? Может ещё что-то? Zulus Можно ли такую конструкцию считать безопасной для условий - update без where - один единственный кластерный индекс как указано в схеме Но никто не гарантирует, что будет можно после очередного SP, CU или в новой версии. Мое имхо - лучше переписать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 09:49 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm Мое имхо - лучше переписать. Вот и моё мнение точно такое-же, но тяжеловато с аргументацией для этого конкретного примера :) invm, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 10:41 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Zulus тяжеловато с аргументацией для этого конкретного примера Сканирование может быть упорядоченное - в порядке ключей индеса, а может быть неупорядоченное - в порядке распределения страниц. Во втором случае, вместо последовательной нумерации может получиться каша. Насколько я знаю, сейчас неупорядоченное сканирование к update неприменимо. Но будет ли так и далее - никто не знает. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 10:57 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Zulus, Создание таблицы Код: sql 1. 2. 3. 4. 5. 6. 7.
Наполнение данными Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Обновление Код: 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. 25. 26. 27.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 11:15 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint Обновление Код: 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. 25. 26. 27.
Все гораздо банальнее. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 11:52 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, авторВсе гораздо банальнее. Все ещё гораздо более банальнее. вот код автора Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
вот результат выполнения кода автора (и моего) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
вот результат выполнения Вашего кода Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 12:08 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint вот результат выполнения кода автора А чтобы правильно готовить примеры, нужно понять как работает код автора. Тогда монстры, подобные вашему, не потребуются. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 12:28 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, согласен ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 12:45 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Правильно будет так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Но, не могли бы Вы наполнить таблицу данными так, чтобы код автора и Ваш код при выполнении давали одинаковый результат ? используя все возможные значения для поля AppCode ))) в том числе и '', никаких же ограничений на это поле, кроме NOT NULL - нет ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 12:58 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint не могли бы Вы наполнить таблицу данными так, чтобы код автора и Ваш код при выполнении давали одинаковый результат ? Чтобы исходный код и мой давали одинаковый результат @Part нужно инициализировать значением, которого нет в таблице . ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 13:06 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, нет, это не я решил, вот код автора Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
обратите внимание авторset @Part = '' и авторAppCode nvarchar(60) not null позволяет хранить любые строковые значения отличные от NULL, или я не прав ? авторЧтобы исходный код и мой давали одинаковый результат @Part нужно инициализировать значением, которого нет в таблице. Это же не согласуется с определением таблицы и кодом автора ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 13:09 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint нет, это не я решил Почему-то решили, что если set @Part = '', то и первая строка в таблице должна быть с AppCode = '' Я же говорю - Вы не разобрались, как работает данный update. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 13:45 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Ну как не конструктивно, ну если есть у автора возможный изъян в логике (а может и предусмотренное поведение), почему не говорить о CHECK на поле AppCode, который не позволит вставить '', но сейчас-то в этих условиях я делаю все что позволяет приведённая структура авторПочему-то решили, что если set @Part = '', то и первая строка в таблице должна быть с AppCode = '' не я это решил, опять же структура данных, если я сделаю Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
то все равно строки со значением AppCode = '' будут первыми потому что Код: sql 1.
(опять же структура) и снова результат выполнения моего кода будет таким же как и результат работы кода автора, в отличие от представленного третьего варианта Повторюсь, не конструктивно, хотите доказать свою точку зрения как минимум покажите такой же результат, что и до рефакторинга, с использованием среза данных, параметры которых описаны в структуре таблицы, а не ссылайтесь на условия, которых нет в постановке задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 14:26 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint все равно строки со значением AppCode = '' будут первым Только ORDER BY в запросе! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 14:31 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint не я это решил, опять же структура данных, если я сделаю У автора типичная задача - пронумеровать строки в разрезе определенного критерия и в определенном порядке. А не ту, котору придумали Вы - "Записать в DocNumber последовательно возрастающее значение, начиная с 2 для всех AppCode = '', а для остальных AppCode - 1" ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 14:38 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
iap, Код: 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. 25. 26. 27. 28. 29. 30.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Нет ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 14:40 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Результат, критерий истины только результат, код в студию Может Вы диагноз неправильно поставили ? invm Zulus Правильно ли я понимаю, что товарищ хочет получить последовательную нумерацию DocNum в пределах AppCode? Может ещё что-то? Zulus Можно ли такую конструкцию считать безопасной для условий - update без where - один единственный кластерный индекс как указано в схеме Но никто не гарантирует, что будет можно после очередного SP, CU или в новой версии. Мое имхо - лучше переписать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 14:44 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
iap, моё почтение! Согласен с тем, что порядок записей гарантируется order by, но в данном случае других вариантов не вижу: - кластерный индекс (один единственный) - параллелизма нет (для текущей версии) Коллеги, спасибо всем участникам :) Код не мой - я как раз хочу его переделать, но 100% владелец будет вредничать и задавать много "почему" ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 15:30 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Всех с наступающим НГ !!! Спасибо за обсуждение !!! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 15:37 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
entrypoint Может Вы диагноз неправильно поставили ? entrypoint Нет ? Почему, объяснено тут - 22051347 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 15:39 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
invm, Там добавление данных INSERT, а не UPDATE про который вы пишите. Субъективные выводы, ссылки на самого же себя, а главное, полное игнорирование доводов, нет ни одного довода, который я бы не подкрепил кодом invm entrypoint Может Вы диагноз неправильно поставили ? entrypoint Нет ? Почему, объяснено тут - 22051347 как можно написать такое когда приведен довод в виде кода, который можно запустить, покрутить, попробовать. Может, если у вас нет желания создать массив данных, с которыми бы отработал Ваш код, у Вас есть желание опровергнуть Код: sql 1.
не на словах, а кодом ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 16:05 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
Zulus, Да, порядок строк только ORDER BY, но в данном случае я говорю о том, что первой в таблице будет любая строка со значением AppCode=''. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 16:09 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
кстати дубли с AppCode != '' никто не отменял, так что почему нумеровать в нелогичном случае нужно именно с двух тоже не понятно ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 16:20 |
|
Вопрос по синтаксису Update
|
|||
---|---|---|---|
#18+
nullin, Да, непонятно Но код автора работает именно так и автор не просил его исправить, автор хотел узнать его назначение, поэтому это поведение кода я воспринимаю как данность и проводя рефакторинг сохранил это поведение. Все доводы моего оппонента в лице invm, основаны на предположениях не подкрепленных ничем - "entrypoint не понимает", "entrypoint не разобрался", "entrypoint ошибается", я же в свою очередь следую только той информации, которая была представлена автором и свои доводы подкрепляю ссылками на структуру базы данных (представленную автором), примерами кода, результатами сравнения. invm, утверждает что я не могу использовать значение '' для AppCode, но я вижу что структура таблицы мне это не запрещает, это одно из валидных значений этой колонки, я утверждаю что согласно опять же структуре таблицы первыми строками в таблице всегда будут строки со значением AppCode='' независимо от порядка вставки, и.т.д. и.т.п., в ответ я получаю бездоказательные возражения Это некорректно, непрофессионально, с учетом того, что код представленный invm выдает результат отличный от результата автора. Код, только код критерий истины ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 16:46 |
|
|
start [/forum/topic.php?fid=46&msg=39909874&tid=1686665]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 323ms |
total: | 451ms |
0 / 0 |