Сначала позвольте мне заявить, что я согласен со всем, что сказали Хаос, Ларри и Фил.
Но если вы настаиваете на другом пути ...
Есть две причины для вашего общего ПК. Одна уникальность по двум таблицам и две для полной ссылочной целостности.
Я не уверен, какая именно «последовательность» поддерживает колонки Auto_increment. Кажется, что есть системная настройка для определения приращения по значению, но ничего для столбца.
То, что я хотел бы сделать в Oracle, это просто разделить одну и ту же последовательность между двумя таблицами. Другой метод - установить значение STEP 2 в auto_increment и начать одно с 1, а другое с 2. В любом случае вы генерируете уникальные значения между ними.
Вы можете создать третью таблицу, в которой нет ничего, кроме столбца PK. В этом столбце также можно указать автонумерацию, если нет способа создать пропускаемый автонуммер на одном сервере. Затем в каждую из ваших таблиц данных вы добавляете триггеры CRUD. Вставка в любую таблицу данных сначала инициирует вставку в таблицу псевдоиндекса (и возвращает идентификатор для использования в локальной таблице). Аналогично, удаление из локальной таблицы может инициировать удаление из таблицы псевдоиндекса. Любые дочерние таблицы, которые должны указывать на родительскую точку этой псевдоиндексной таблицы.
Обратите внимание, что это должен быть триггер для каждой строки, и это замедлит работу crud в этих таблицах. Но таблицы типа «продукт», как правило, НЕ имеют очень высокого уровня DML. Любой, кто жалуется на «влияние на производительность», не , учитывая масштаб.
Обратите внимание, это предоставляется как функциональная альтернатива, а не моя рекомендация как лучший способ