72 похожих чатов

Требуется при вставке заполнять столбец foo.any путем конкатенации autoincrement primary

и столбца foo.number. foo.any должен быть уникален. Как я понимаю, при использовании триггера в before insert не будет значения foo.id, поэтому вычислить значение foo.any до вставки невозможно. Может ли триггер after insert гарантировать, что при параллельных запросах не будет создано две записи с одинаковым значением autoincrement primary в foo.any?

create table foo
(
`id` int unsigned auto_increment
primary key,
`number` int unsigned,
`any` int unsigned,
unique index (`any`)
);

MySQL

12 ответов

5 просмотров

вы как-то странно спрашиваете вам надо в any писать text(id) + text(number)? уникальность id в целом вам гарантирует всё ну и в mysql вроде есть generated columns, судя по документации, чтобы вообще ничего не делать

W.-Blazkowicz Автор вопроса
Roman Sergeev
вы как-то странно спрашиваете вам надо в any писат...

уникальность id в целом вам гарантирует всё Насколько я понимаю, то при использовании after insert trigger после insert будет выполняться update, а значит, кажется, что без блокировки может сложиться ситуация, когда в таблицу попадет несколько записей с одинаковым foo.any (а точнее будет ошибка из-за unique index). Так ли это?

W. Blazkowicz
уникальность id в целом вам гарантирует всё Наско...

ещё раз ваш вопрос сводится к наличию гарантии уникальности foo.id триггер after insert ничего с уникальностью id сделать не может (если вы вдруг не начнёте пытаться менять id из триггера) конкатенация чего-то уникального примерно с чем угодно является уникальной (с точностью до нюансов поведения null в конкретном контексте)

Давай начнем с базового. Параллельных инсертов не существует

Roman Sergeev
ещё раз ваш вопрос сводится к наличию гарантии уни...

А не возникнет ситуация вида: "1" + "23" и "12" + "3"?

А собственно какую проблему ты этим колдунством решаешь?

W.-Blazkowicz Автор вопроса
Roman Sergeev
ещё раз ваш вопрос сводится к наличию гарантии уни...

Понятно, спасибо. Правильно ли я понимаю, что невозможно использовать insert trigger, чтобы при вставке поместить в столбец значение autoincrement id этой же новой строки? В случае с before insert autoincrement еще неизвестен, а в случае с after обновление невозможно, так как будет бесконечный цикл

Alexander Morozov
А не возникнет ситуация вида: "1" + "23" и "12" + ...

Возникнет, вы правы. Я не учёл разную длину текстового представления.

Roman Sergeev
Возникнет, вы правы. Я не учёл разную длину тексто...

Используй переменную между ними как разделение. Ту же точку например

W.-Blazkowicz Автор вопроса
Roman Sergeev
вы как-то странно спрашиваете вам надо в any писат...

ну и в mysql вроде есть generated columns, судя по документации, чтобы вообще ничего не делать К сожалению, mysql не позволяет создать generated column с autoincrement id. Error 3109: Generated column '' cannot refer to auto-increment column.

W.-Blazkowicz Автор вопроса
Ashish Cancelado
А собственно какую проблему ты этим колдунством ре...

Необходимо извлекать этот уникальный foo.any и транслировать его как "идентификатор" в другую систему

W.-Blazkowicz Автор вопроса

Правильно ли понимаю, что в виду невозможности использовать autoincrement id в триггерах и generated value, задачу, кроме как select с concat не решить? mysql

Похожие вопросы

Обсуждают сегодня

Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
господа, когда у вас в боте есть локализация (ру + англ, остальные языки пока не планируются), вы на первом старте как с языком решаете вопрос: смотрите на language_code приле...
Denis 🐍|👑 | darling! 🥰
5
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
10
Добрый день. Созданию отношения таблиц для учёта кораблей, их движения между точками (портами) согласно расписания. Терзают сомнения в правильном ли направлении двигаюсь 😅 1...
Aleksey
1
I have financial chart like this I can mask by color to get green and red squares. I want get two data First i want to get two last squares(two in the very right side colors) ...
@. .@
4
Я колись ставив гуглу антиспам 3.0, може і норм, але мені не дуже зайшло. Теж думав тиждень, що його і куди. Зупинився на трех варіантах відразу всі три і включив 1. Перевір...
𝓔𝓾𝓰𝓮𝓷𝓮𝓥 J
2
Всем привет, Добавил в плагин определение user agent public function registerMarkupTags() { return [ 'filters' => [ 'staticPage' => ['RainLab\Pages\Cl...
John Norton Kruger
3
Привет. Наверняка у кого-нибудь здесь есть опыт работы с трекерами (встроенными в OpenCV (KCF) или абстрагированными) на одноплатниках. Если не рассматривать малинку и други...
Georgy Makarov
4
Приветствую. Есть N видео объектов (фильмы). Часть полной длины просмотра а часть короткие ( обрезаны титры). Задача найти идентичные фильмы. Я не в курсе, есть ли аналог шаз...
Nikolay Chudinov
7
Карта сайта