Задать вопрос
  • Где лучше генерировать uuid для базы? В коде или в sql запросом?

    @Akina
    Нет, не обычная, это может привести к нарушению целостности данных, что повлечет за собой ряд других ошибок

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

    как Вы собираетесь связывать новые сущности с только что добавленной записью без дополнительного SQL запроса, который позволит получить ID записи?

    ??? Вы о существовании INSERT .. SELECT знаете? или всю жизнь пользовались только INSERT .. VALUES?

    реализация хранения данных не должна быть тесно связана с бизнес-логикой приложения.

    Вот об этом и речь. Ошибка в том, что Вы низводите сервер до уровня тупого хранилища. И не желаете признавать что та часть кода, которая располагается на SQL-сервере, является равноправной частью приложения.

    Сегодня Вы используете MySQL, завтра захотите PostgreSQL, потом Microsoft SQL Server и все эти автоматически генерируемые идентификаторы, триггеры, хранимые функции и другая логика принесут немало хлопот, поэтому учитесь проектировать приложение правильно. Нельзя, чтобы база данных управляла приложением.

    Вы сегодня пишете код на питоне, завтра захотите перейти на шарп, потом на джаву... в чём разница с утверждением про изменение SQL-сервера? ни в чём. У Вас выбранный язык (или даже фреймворк в рамках того же языка) управляет приложением - но это Вас как-то не беспокоит... Нельзя, чтобы выбранное средство создания приложения управляло приложением - Ваш тезис, просто применённый к тому, о применении к чему Вы даже помыслить боитесь. Так что не надо про "правильное проектирование приложения".
  • Где лучше генерировать uuid для базы? В коде или в sql запросом?

    @Akina
    entermix,
    может произойти ошибка, например, в связи с недостаточной проверкой данных

    Ну произошла ошибка... и что? Уйдёт багрепорт, код допишется и будет нормально проверять входные данные. До следующего багрепорта. Обычная ситуация.

    Если первичный ключ не нужен на стороне клиента (backend), то как связать новые сущности с только что созданной записью в базе данных?

    ??? Связывание на основании первичного ключа как существующий объект - фикция.

    Есть установление значения в зависимой записи поля, определяющего связь, в значение, взятое из зависящей записи - собственно то, что мы считаем процессом связывания. Есть контроль, что для зависимой записи запись зависящая существует - это то, что мы считаем процессом контроля. То есть и то, и другое - процессы.
    Причём процессы, которые являются обязательной составляющей процесса изменения набора данных. То есть и то, и другое - процессы внутри SQL-сервера. И сервер этим занимается.
    В общем, не клиентское это дело (да и не умеет он...). А то, что он не умеет - о том ему и знать не нужно.

    А именно связывание на основании, как сущность, а не процесс - это всего лишь абстракция в нашем мозге.

    PS. Всё обсуждение - имхо последствие попытки низвести SQL-сервер до роли тупого хранилища данных. И выполнять абсолютно всю обработку на клиенте. Тебе дали - храни. С тебя спросят - отдашь.

    Да, выполнять обработку клиент будет скорее всего плохо и криво... но это совсем другая сказка.
  • Где лучше генерировать uuid для базы? В коде или в sql запросом?

    @Akina
    entermix, вот очень интересно, с чего был сделан столь вопиюще странный вывод, что запись не будет сохранена в БД? когда всё с точностью до наоборот - UUID генерируется и сохраняется в БД, но не попадает на клиентскую сторону, ибо там он нахрен не нужен.
  • Range и Rows в оконных функциях же работают оба с диапазонами строк?

    @Akina
    Я дал fiddle. Где всё прекрасно видно. Если тебе графически проще понимать - нарисуй данные из fiddle.

    Нашел такое пояснение для range. Оно верное?

    На этот вопрос тебе никто не ответит. Текста запроса нет...
  • Как получить записи по диапазону дат, если есть только начало и конец?

    @Akina
    Для этого мне нужно хранить все свободные даты.

    ?? зачем? Правило - дано. Запрограммировать - элементарно.
  • Как получить записи по диапазону дат, если есть только начало и конец?

    @Akina
    accountnujen,
    я задал этот вопрос на 4 форумах и никто мне не ответил.

    А в форумах вообще крайне плохо относятся к вопросам типа "сделайте за/для/вместо меня".
    Типичная цепь при построении структуры БД - это

    1) Анализ предметной области
    2) Выделение сущностей и атрибутов, процессов и связей
    3) Построение ER-диаграммы
    4) Создание структуры БД

    Вы первые три пункта не то чтобы левой пяткой - Вы их вообще пропустили. Так что... не послали во фриланс - уже хорошо.

    как мне ещё узнать, какие номера у меня свободны?

    Сразу узнать нужное.
    Правило - "если диапазоны имеют пересечение, то начало одного меньше конца другого в обоих направлениях".
  • Как получить записи по диапазону дат, если есть только начало и конец?

    @Akina
    архитектуры ещё никакой нет, ... в обсуждении https://qna.habr.com/q/1128924 , где я спрашивал про архитектуру...

    Даже самая буйная фантазия не позволяет разыскать связь между указанной темой и выбранным в итоге архитектурным решением.
    Да, архитектура - уже есть. Но, к сожалению, высосанная из пальца, а не построенная на основании глубокого анализа предметной области. Единственно правильным решением полагаю стереть всё и начать заново, с нуля. ТЫ уже на поле с граблями, а оттуда выхода нет.

    это был самый оптимальный вариант.

    Какой болван Вам об этом сказал?

    Для этого я хочу получить в начале все номера, которые заняты в этот промежуток, а затем получить все номера, кроме тех, что заняты.

    Если полученные "в начале все номера, которые заняты в этот промежуток", будут получены только для того, чтобы получить все остальные номера, то это [censored]... в смысле лишние и ненужные операции.

    допустим собрал

    Плохо. OR - это самое последнее, что должно попадать в условие отбора, порой даже хуже функции. Преобразуй в AND NOT.
  • Где лучше генерировать uuid для базы? В коде или в sql запросом?

    @Akina
    чтобы можно было обернуть несколько запросов в транзакцию

    Для справки. Те транзакции, в которые ты оборачиваешь запросы в коде приложения, на самом деле - транзакции, которые организует и выполняет SQL-сервер. Всё, что делает клиентский код при организации и выполнении транзакций - это передаёт SQL-серверу просьбу о транзакции. То есть, обычный паразит-посредник.

    добавлять запись в базу данных, получать идентификатор и только после этого добавлять связанные сущности.

    Типичный идиотизм, другого слова и не подобрать, от программиста, который до мелочей и тонкостей знает свои язык и среду программирования, но не удосужился освоить хотя бы основы SQL. К сожалению, достаточно частая ситуация.
  • Range и Rows в оконных функциях же работают оба с диапазонами строк?

    @Akina
    ROWS отсчитывает записи в штуках, а RANGE по значению. Если test идёт с шагом 0.1, то фрейм при ROWS включает 4 записи, а при RANGE - 31 запись.
  • Range и Rows в оконных функциях же работают оба с диапазонами строк?

    @Akina
    В показанном запросе окном являются все записи со значением от test-1 до test+2.
  • Как использовать maxmind GeoLite2 на mysql 5.5, где нет inet6_aton?

    @Akina
    Если после импорта поменять тип поля на VARBINARY(4), то запрос из мануала
    [skipped]
    вообще не находит результатов, как и до смены на VARBINARY(4).

    Любое мероприятие окончится неудачей, если не думать, что именно делаешь.
  • Как найти название исключая определенные слова в нем регулярным выражением?

    @Akina
    marselabdullin, блин, что такое "вытащить строку"??? Вернуть ту строку текстового файла, в которой есть эта подстрока (left join RawVault.PRJ_RV_Lnk_Document_X_PostedDocument_Purchases_LastValues tgt)? или только содержащий эту подстроку токен (RawVault.PRJ_RV_Lnk_Document_X_PostedDocument_Purchases_LastValues)? или что-то ещё?
  • Где лучше генерировать uuid для базы? В коде или в sql запросом?

    @Akina
    А какое отношение связывание сущностей, выполняемое SQL-сервером, имеет к клиенту? И какое отношения генерация имеет к последующему использованию?
  • Где лучше генерировать uuid для базы? В коде или в sql запросом?

    @Akina
    Лучше в коде генерировать или в запросе функцией.

    Лучше - с какой точки зрения, по каким критериям нужно оптимизироваться?

    В коде - в каком именно коде? имеется в виду клиентский код? или сравнивается генерация непосредственно в запросе с созданием для генерации отдельной пользовательской функции, которая будет использоваться в запросе?

    Вообще-то, чисто по сути и назначению - UUID вообще-то просто не должен покидать SQL-сервера, ибо клиенту с его значением делать нечего. Так что в упор не вижу смысла поручать генерацию кому-то ещё, кроме самого SQL-сервера.
  • Как найти название исключая определенные слова в нем регулярным выражением?

    @Akina
    Что-то постановка вопроса совершенно невменяемая.

    Есть sql файл:

    Это вообще-то запрос. Или имеется в виду. что его текст находится во внешнем файле?

    Нужно достать RV_Lnk_Document_X_PostedDocument_Purchases

    Эта подстрока в тексте запроса встречается только один раз - в строке
    left join RawVault.PRJ_RV_Lnk_Document_X_PostedDocument_Purchases_LastValues tgt
    И совершенно непонятно, какой смысл вкладывается в слово "достать".
  • Как можно вытащить стоимость товара из сайта конкурента?

    @Akina
    А что мешает-то? цена текстом, не картинкой, распознавать не требуется. Грабишь текст страницы, и выдираешь из него наименование да цену.
  • Как создать свою двойную шапку заголовков в запросе?

    @Akina
    iskateli,
    Всем известно (ну или должно быть известно), что поле может иметь только один тип - во всех записях. Наличие в выходном наборе надписей шапки, которые все будут строки, однозначно устанавливает, что все поля будут иметь строковый тип. Так что выходные поля запроса, имеющие не-строковый тип, очевидно следует привести соответствующими CAST().
  • Как организовать сеть (теория)?

    @Akina
    hint000, точно. Вот вылетело из головы. Старею, наверное...
  • Как организовать сеть (теория)?

    @Akina
    hint000, в данном случае это скорее логическая сущность. Не говорить же "бродкастово-мультикастовый домен", право слово...