распределенный первичный ключ mysql

У меня есть разные таблицы, которым необходимо совместно использовать пул первичных ключей.

Например. таблица A имеет первичные ключи от 0 до 9, таблица B имеет первичные ключи от 10 до 19.

Есть ли способ сообщить mysql, откуда взять первичный ключ? Как хранимая процедура? Достаточно будет запустить скрипт, который знает о раздаче ведер.

Наивным подходом было бы устанавливать первичный ключ в каждом операторе вставки. Этот ПК взят из этого пула. На самом деле это нужно будет реализовать в каждом приложении (например, php или java), которое вставляется в эту БД, чего я хочу избежать.


person user3169506    schedule 15.09.2015    source источник


Ответы (1)


Я не понимаю, почему таблицы должны совместно использовать первичные ключи.

Ваше описание уже выдает проблему. Первичные ключи должны быть бессмысленными (или, самое большее, могут указывать порядок вставки). Конкретные диапазоны не должны выделяться для разных целей.

Вместо этого каждая таблица может иметь свой собственный автоматически увеличивающийся идентификатор. Одна из возможностей – создать другую таблицу с автоматически увеличивающимся идентификатором и использовать внешний ключ для ссылки на эту таблицу. Недостатком является то, что вам нужно вставлять в обе таблицы для каждого insert — триггер может сделать это довольно легко.

Вместо «диапазонов» первичных ключей у вас должен быть явный тип.

person Gordon Linoff    schedule 15.09.2015