|
PRIMARY KEY если существует то не ADD а обновить
|
|||
---|---|---|---|
#18+
Всем доброго дня, сегодня использую след процедуру для добавление PRIMARY KEY: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
но она требует предварительно удаления этого ключа. Есть что то аналогигное UPDATE OR INSERT INTO но уже для ключей и индексов в FB2.5.8 и выше. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 13:11 |
|
PRIMARY KEY если существует то не ADD а обновить
|
|||
---|---|---|---|
#18+
hlopotun Всем доброго дня, сегодня использую след процедуру для добавление PRIMARY KEY: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
но она требует предварительно удаления этого ключа. Есть что то аналогигное UPDATE OR INSERT INTO но уже для ключей и индексов в FB2.5.8 и выше. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 13:15 |
|
PRIMARY KEY если существует то не ADD а обновить
|
|||
---|---|---|---|
#18+
hlopotun, и зачем эта дичь, интересно. 1. зачем вот так вообще делать 2. зачем "обновлять" ПК, если он уже построен. и если уж тебе таким вычурным образом надо дропнуть ПК и его заново создать, то делать это надо в автономных транзакциях. p.s. и ты обломишься, если на существующий ПК уже есть ФК. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 13:32 |
|
PRIMARY KEY если существует то не ADD а обновить
|
|||
---|---|---|---|
#18+
kdvи зачем эта дичь, интересно. Ну ты же помнишь его старую песню: "25 лет говнокода в авгиевых конюшнях, разгребать некогда, да и лень, надо быстро как-то отхакать". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 13:35 |
|
PRIMARY KEY если существует то не ADD а обновить
|
|||
---|---|---|---|
#18+
hlopotunЕсть что то аналогичное кроме того, что я сказал выше, DDL обычно это не просто "инсерт или апдейт одной системной таблицы", а изменение нескольких системных таблиц (ПК это не только констрейнт, но еще и индекс, плюс сегменты индекса, т.е. как минимум 3 таблицы), плюс еще дополнительные действия. И если ты мог заметить, триггеров на системных таблицах нет (и даже создать их нельзя). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 13:36 |
|
PRIMARY KEY если существует то не ADD а обновить
|
|||
---|---|---|---|
#18+
kdv hlopotun, и зачем эта дичь, интересно. 1. зачем вот так вообще делать 2. зачем "обновлять" ПК, если он уже построен. и если уж тебе таким вычурным образом надо дропнуть ПК и его заново создать, то делать это надо в автономных транзакциях. p.s. и ты обломишься, если на существующий ПК уже есть ФК. с ФК понятно что они удаляются раньше, а с ПК вроде как нет необходимости они всегда стоят в обновлении после удаления ФК и после изменения структуры таблиты. И если поля входящие в ПК не меняются было бы удобно. Тут используется концепт в котором обновление можно запускать многократно. Это экономит кучу времени на этапе отладки обновления. Позволяет отлаживать изменения всего кода в одном файле обновления, если сильно разростается конечно можно и разделять. А если есть ошибки в порядке обновления процедур индексов итп то они вылазят сразу по мере их добавления в файл обновления. Еслть самописная библиотека с подобными функциями, на самом деле очень удобно и сокращает обьём кода при каждом обновлении. А также упрощает восприятие кода обновления и соотв уменьшает вероятность возникновения ошибок. Если это не по чьим то канонам не пользуйтесь. Мы от этого концепта уже не откажемся. Это действительно удобно в чём была возможность убедиться на протяжении многих лет использования такого концепта. п.с. прийдётся тогда просто немного дописать эту процедуру. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:02 |
|
PRIMARY KEY если существует то не ADD а обновить
|
|||
---|---|---|---|
#18+
hlopotunЕслть самописная библиотека с подобными функциями, на самом деле очень удобно и сокращает обьём кода при каждом обновлении. А у меня объём кода при каждом обновлении нулевой. И знаешь почему? Потому что исходная версия базы известна и на неё можно просто накатить скрипт обновления, не гадая что в базе есть, а чего нет. И если поля PK не меняются - его вообще нет в скрипте. Отладка скрипта сводится к его прогону на базе и сравнении результата с эталонной базой. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:08 |
|
PRIMARY KEY если существует то не ADD а обновить
|
|||
---|---|---|---|
#18+
hlopotunИ если поля входящие в ПК не меняются было бы удобно. а в чем смысл изменения ПК если столбцы не меняются? Поменять имя констрейнта? Я понимаю, допустим, это "благообразный" рефакторинг какой-то древней базы. Но автоматизировать-то это зачем? Вся эта "автоматизация бардака" ведь будет выкинута после окончания бардака. Опять же, понимаю, когда автоматизируются рутинные действия. Но смысла в этих рутинных действиях я не улавливаю. hlopotunЭто экономит кучу времени на этапе отладки обновления хренасе, обновления... С модификацией ПК, ФК, и прочего. hlopotunразростается разрАстается. Рост, но "расти". ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:33 |
|
PRIMARY KEY если существует то не ADD а обновить
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov hlopotunЕслть самописная библиотека с подобными функциями, на самом деле очень удобно и сокращает обьём кода при каждом обновлении. А у меня объём кода при каждом обновлении нулевой. И знаешь почему? Потому что исходная версия базы известна и на неё можно просто накатить скрипт обновления, не гадая что в базе есть, а чего нет. И если поля PK не меняются - его вообще нет в скрипте. Отладка скрипта сводится к его прогону на базе и сравнении результата с эталонной базой. да, если скрипт обновления создаётся автоматически при сравнении баз тем же IBExpert. А если куча разработчиков которым каждому на своей машине надо ежедневно накатывать этот скрипт, и у каждого своя конечная база и не факт что подходит под этот скрипт. Каждый так же вносит свои правки в структуру бызы под свои задачи итп. У меня иногда возникает впечатление что я дискутирую с людьми с одной стороны грамотными и знающими тот же Firebird но которые работают или в одиночку или малой командой. Если Вас поместить в фирму где десятки разработчиков пилят тулз работающий с несколькими одними и теми же базами одновременно, у всех свои тикеты и всё это должно разрабатываться одновременно то ваша идеология тупо остановит сам процесс разработки. То что я тут обсуждаю худо бедно но работает в большой команде и уже много лет, и позволяет выкатывать более менее сносные релизы по 6 раз в год. И всё это реально работает и приносит реальные, весьма не маленькие деньги. п.с. Ваша модель подходит только для случая когда сначала строится база а потом она обвязывается клиентом. В реальных больших проектах такое бывает редко. Тут многозадачность и параллельность в разработке. Совсем другой мир. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 18:23 |
|
PRIMARY KEY если существует то не ADD а обновить
|
|||
---|---|---|---|
#18+
hlopotun, десятки разработчиков работают с одной базой и никакого контроля над ними? Так бывает? Хаос??? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 18:39 |
|
PRIMARY KEY если существует то не ADD а обновить
|
|||
---|---|---|---|
#18+
hlopotunУ меня иногда возникает впечатление что я дискутирую с людьми с одной стороны грамотными и знающими тот же Firebird но которые работают или в одиночку или малой командой. Лайфхак: команда любого размера превращается в малую посредством разделения обязанностей. А то, что описываешь ты, это хаотическая модель разработки. Действительно, совсем другой мир. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 18:39 |
|
PRIMARY KEY если существует то не ADD а обновить
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov .............. Лайфхак: команда любого размера превращается в малую посредством разделения обязанностей. А то, что описываешь ты, это хаотическая модель разработки. Действительно, совсем другой мир. да, в принципе к тому и двигаемся по мере роста количества персонала. Но на данном этапе на все темы по специализации народа хватает. Не по причине количества а по причине погружения в тему. Есть спецы которые поднимали определённые разделы и владеют темой глубоко, есть люди прищедшиее позднее или с других проектов. Есть спецы которые пилят Framework и владеют только технической стороной но не очень в бизнес процессах. Сейчас идут реорганизации, пробуем, эксперементируем как имеющимися силами справляться. Что то получается, что то не очень. Пробуются всякие методы типа Scrum, Agile итп но пока складывается впечатления что для них мы недостаточно большие. Безусловно есть кучи старого кода и старых фреймворков но потихоничку выпиливаем их. Пробуем частично смешивать группы разработки дабы при потере спеца всё не шло прахом итп. Явно назрела тема архитектуры и архитекторов. Но что бы подготовить архитектора для такого обьёма информации и кода нужны годы. Мне многое не нравится как написано, спланировано и организовано но человек в этой конторе я новый потому для начала надо в сам предмет погрузиться а потом пробовать что то кардинально менять. И как бы там ни было всё работает, релизы выходят, ошибки правятся и денюжку всё это приносит. Поэтому без резких телодвижений будем всё причёсывать стараясь не закладывать новые ошибки и подготавливая спецов. Тему архитекторов пока решаем на уровне проектов, возможно когда то дорастём до чего то большего. Хаотичной эту разработку я назвать не могу, всё делается по планам, с тестированием итп Да многое можно улучшить, что постепенно и делаем. Как то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2021, 16:15 |
|
PRIMARY KEY если существует то не ADD а обновить
|
|||
---|---|---|---|
#18+
hlopotunПробуются всякие методы типа Scrum, Agile итп но пока складывается впечатления что для них мы недостаточно большие. Раз недостаточно большие - попробуйте объяснить каждому , кому хочется что-то поменять в базе, что для этого надо: 1. Испытать скрипт на изменение на локальной базе; 2. Внести соответствующее изменение в мастер-скрипт создания базы с нуля; 3. Внести соответствующее изменение во все скрипты апгрейда базы со старых версий до текущей; 4. Запустить скрипт на общей БД разработчиков; 5. Закоммитить эти изменения в СКВ. И тогда никому никогда не придётся гадать есть у таблицы ПК или нет его. Когда облажаетесь с объяснением - количество людей, допущенных к изменению БД сократиться как бы само собой за счёт отъёма прав у тех, до кого не дошло. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2021, 16:29 |
|
|
start [/forum/topic.php?fid=40&fpage=3&tid=1559893]: |
0ms |
get settings: |
110ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 318ms |
total: | 548ms |
0 / 0 |