@SimaYagodka

Как сделать auto increment колонку, которая увеличивается относительно другой колонки?

Всем привет, хочу создать таблицу вида

--------------------------
| class_id | student_id |
--------------------------
| 0 | 0 |
| 0 | 1 |
| 0 | 2 |
| 1 | 0 |
| 1 | 1 |
--------------------------


То есть у каждого уникального class_id отсчет student_id начинается с 0, и считается отдельно. Контекст с учениками и классами не самый удачный, но это просто для примера
  • Вопрос задан
  • 210 просмотров
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Никогда, никогда, и ни при каких обстоятельствах нельзя использовать автоинкремент. Это абсолютно неправильный паттерн программирования в SQL (да и вообще в базах данных).
Более того, нормальные базы данных автоинкремента не имеют!
Что использовать, спросите Вы? Используйте GUID/UUID и прочие уникальные идентификаторы.
Для каждой записи генерируйте свой, уникальный UUID, и используйте его как первичный-вторичный ключ для ссылок на записи.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
По виду это похоже на троичную систему счисления. Ее можно получить просто пересчитывая нормальный sequence. Пишу на псевдокоде.

create table ПочемуАвторНикогдаНеПишетНазваниеТаблиц (
   id sequence,
   class_id int GENERATED ALWAYS AS (id / 3),
   student_id int GENERATED ALWAYS AS (id % 3)  
);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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