|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
Но ведь так можно сразу посылать любого? Мне дети говорят -- я бы может и устроился на такую работу, но староперды реально гнобят за незнание чего-то там И я вместе с ними негодую Хотя реально такой же староперд и с такими же претензиями Я к тому, что нужно и критиковать, но и обсуждать решения, а не сразу их отметать ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 13:03 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров Но ведь так можно сразу посылать любого? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 13:23 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров но и обсуждать решения Зачем обсуждать решения человека который не желает учиться и вместо того чтобы сначала изучить, понять и осознать, лепит ахинею и вываливает ее на форум? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 13:23 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров Я к тому, что нужно и критиковать, но и обсуждать решения, а не сразу их отметать ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 13:25 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров но староперды реально гнобят за незнание чего-то там P.S. Никогда не обращали внимание на "военную" терминологию и риторику бизнеса? Это, конечно плохо: командир своей жизнью отвечает за жизнь подчинённых, а у бизнеса такой ответственности - нет. Но, по факту, бизнес это война и не очень понятно, почему надо обхаживать какого-нибудь цатилетнего лба, который ведёт себя как дошколёнок. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 13:29 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
Elic Вячеслав Любомудров Но ведь так можно сразу посылать любого? В его плесканиях я вижу адекватную реакцию на критику и таки чтение (и, отправление к) доке Это уже дорогого стоит Да блин, я точно также буду гнобить за кривую идею, построенную на неправильных предпосылках Или не буду Кстати, тот же Саян, как мне кажется, именно через наш форум, решил куда ему дальше расти и этот форум был очень неплохим учебником/общением, и его тут тоже за глупости неплохо ругали И много их таких... И, возможно, скоро именно неофит будет отвечать в команде дядюшки Тома ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 13:51 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров Кстати, тот же Саян, Лично я никого толкового никогда не гнобил, только направлял. Надеюсь (и не безпочвенно), это имело определённый успех. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 14:04 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
Дык я тоже на такое надеюсь К сожалению, не все оценили ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 14:10 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
Виталий, я ведь тоже начинаю ругаться, когда приходят неофиты и начинают шатать основы Более того, ругаюсь, когда они не просто свои фантазии реализуют, а начинают отвечать, типо это правильно Но ведь от них никуда не деться, кто-то же должен (прийти и подхватить знамя) продолжать работать Очень обидно, когда это знамя подхватывают просто неучи Еще обидней, когда они в силу возраста/тупизны проталкивают вот эти свои совершенно глупые (но, кажущиеся им самыми умными) идеи Как по мне -- этот топик как раз доведение до абсурда, но это задание на соображулесть -- и автор вполне его прошел -- так что 5- по моей скромной оценке ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 14:23 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
НеофитSQL Замените на гугол, SCN точно меньше гугола. Ну заменил: Код: plsql 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. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Доку по традиции не читаем (что видит и что не видит autonomous transaction). SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 14:34 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров так что 5- по моей скромной оценке ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 14:47 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров начинаю ругаться, когда приходят неофиты и начинают шатать основы хз. мне именно этим и интересны посты неофита с неконвенциональными подходами. уж точно интереснее и полезнее тысяч комментариев формата "ну тупоооой", которых даже в этом треде полно. я вообще не понимаю, что такое "расшатать основы". я либо в состоянии на пальцах и с примерами объяснить, почему что-то делать не надо, либо, если я не в состоянии, то это всегда повод спросить себя - а так ли я прав? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 14:58 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
кит северных морей, Неофит отказывается изучать и понимать многопользовательский доступ к одному ресурсу, ему почему то кажется, что если он напишет много бредового кода, то законы природы перестанут действовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 15:08 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
кит северных морей уж точно интереснее и полезнее тысяч комментариев формата "ну тупоооой" ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 15:09 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
Elic Так в чём польза то? понятие "основы" за это время трансформировалось неоднократно. например, когда-то давно одной из "основ" для меня было мнение, что ссылочная целостность данных должна обеспечиваться декларативными ограничениями, и никак иначе. потом я ляпнул это на каком-то интервью, а мне в ответ сказали, что у них в системе вообще ни одного FK нет. разрыв шаблона, основа пошатнулась, и со временем сдвинулась в более правильном направлении. соответственно такие, кажущиеся неконвенциальными мнения - это всегда reality check. точно ли мнение неконвенциальное, или может просто это ты сам дурак? и польза как раз в том, что дураком время от времени оказываешься ты сам. наверное, когда вам сначала системно кладут знания в голову в правильном порядке, а потом вы начинаете их применять - это не так критично. но это, как я сказал, не мой случай. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 15:56 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
SY, это мой баг. Поспешил-людей насмешил. Переделал сборку мусора во вспомогательной таблице, не заметил ошибки в случае, когда таблица пустая. Правку с гуголом писал перед сном, снова не проверил :) Там нужен не Inf, не гугол а ноль. Я думаю вы и сами давно заметили и разобрались. Извините, что потратил ваше время, надеюсь, copy/paste много не отнял. Если есть желание, проставьте 0 в nvl, или просто сделайте первый коммит чтобы сделать таблицу непустой, потом все должно работать штатно: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
С нулем, первый коммит не нужен: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 01:04 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров Красава, че Спасибо :) > Только вот наличие в целевой табличке надо проверять тоже уже после получения блокировки Действительно. Я строил constraint только для вставки, как proof of concept. Мне было интересно посмотреть, с какими сложностями может столкнуться программист при создании constraint по колонке, и возможно ли это вообще. > А также обязательно не забыть выполнять всю эту возню и при UPDATE и при DELETE Конечно, это было оговорено. > Ну и использование явного номера блокировки -- не есть хорошо proof of concept >Про производительность вообще молчу proof of concept Я поначалу рассматривал возможность использования структур в памяти (collections or bitmask), но пока не разобрался можно ли их создавать в глобальном контексте. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 01:12 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
graycode кит северных морей, Неофит отказывается изучать и понимать многопользовательский доступ к одному ресурсу, ему почему то кажется, что если он напишет много бредового кода, то законы природы перестанут действовать. Короткий метод через индекс вспоогательной таблицы не понравился другим, пришлось делать вручную. Давайте прекратим обсуждение ТС, и посмотрим на суть вопроса: возможно ли средствами Оракла реализовать unique constraint на таблице через триггеры? Я столкнулся с несколькими проблемами, но решил задачу для insert. Похожим образом она решается для delete, update. Мне видится, что задача решаема. Для уникальности естественно это упражнение не слишком полезно, т.к. есть встроенные средства. Для какого-нибудь экзотического constraint по колонке (напр., расстояние Левенштайна между любых двух строк не может быть менее N) мой метод позволяет построить прототип. Код опубликован, известные ошибки исправлены. Меньше страницы, можно прочитать и найти ошибку. Попробуйте, серыйкод, обмануть мой триггер как это сделал SY для ранней версии. А потом подумайте, почему мой интерес в возможности или невозможности задачи вам причиняет неудобство. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 01:29 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
НеофитSQL Для какого-нибудь экзотического constraint по колонке (напр., расстояние Левенштайна между любых двух строк не может быть менее N) мой метод позволяет построить прототип. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 07:35 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
НеофитSQL SY, Там нужен не Inf, не гугол а ноль. Там просто не нужен NVL. Ну а теперь попробуй TRUNCATE TEST23: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Но суть не в этом а в том что ты убиваешь транзакционность. При уникальном ключе сессия 2 нарвавшаяся на еще незакоммиченный дубль сессии 1 висит до тех пор пока сессия 1 не выполнит либо commit - тогда сессия 2 получит ORA-00001, либо rollback - тогда insert/update сессии 2 прекрасно завершится. Ты-же бежишь впереди паровоза и выставляешь сессии 2 ORA-00001 когда сессия 1 еще не завершила транзакцию: Cессия 1: Код: plsql 1. 2. 3. 4. 5.
Cессия 2: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 15:01 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
НеофитSQL Для какого-нибудь экзотического constraint по колонке Любые попытки извернуться через триггер заранее обречены на провал. Подумай про более чем одного пользователя и про то когда срабатывает триггер - при окончании транзакции или немного раньше. Всё кроме полной сериализаци нерабочее, а сериализация - бессмысленна. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 15:56 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
НеофитSQL, Код: plsql 1. 2. 3.
Во время выполнения этого запроса, другая сессия выполняет фиксацию транзакции, например ты проверяешь uq = 100500 и другая сессия в этот момент зафиксировала вставку с таким же uq, как ты думаешь, что произойдет дальше? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 17:41 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
Конструктивные ответы. Я подумаю ещё. Кабанчег, "обречены на провал" у вас означает невыполнимо в принципе, или "нет смысла, потому что встроенные лучше?" Про второе я не сомневаюсь. Про первое я пока не уверен, хочу разобраться. SY: про trunc понял,я начал с реализации только insert, другие операции пока не разрешены. Если невозможно сделать insert, то невозможно вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 17:58 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
graycode НеофитSQL, Код: plsql 1. 2. 3.
Во время выполнения этого запроса, другая сессия выполняет фиксацию транзакции, например ты проверяешь uq = 100500 и другая сессия в этот момент зафиксировала вставку с таким же uq, как ты думаешь, что произойдет дальше? Я думаю что вернёт 0 (зафиксировала это post?), дальше увидит значение во вспомогательной таблице и даст ошибку дупликата. Кто-то уже посоветовал перенести эту проверку в критическую секцию. Как окончательно проснусь,обновлю код триггера, чтоб не обсуждать ошибки старых версий. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 18:03 |
|
Реализация уникальности без ключей и индексов
|
|||
---|---|---|---|
#18+
НеофитSQL SY: про trunc понял,я начал с реализации только insert, другие операции пока не разрешены. Если невозможно сделать insert, то невозможно вообще. Забудь про truncate. Реши транзакционность. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 18:06 |
|
|
start [/forum/topic.php?fid=52&msg=40018544&tid=1880705]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 159ms |
0 / 0 |