У меня есть таблица содержимого в моей базе данных MySQL (таблица содержимого Drupal, для чего она стоит), которая имеет первичный ключ с автоматическим увеличением, nid. Я хочу иметь возможность реализовать решение для нечетных и четных идентификаторов, в котором контент, созданный в рабочей среде, имеет четные идентификаторы, а контент, созданный в dev, имеет нечетные идентификаторы, чтобы избежать конфликтов идентификаторов при синхронизации. К сожалению, MySQL не поддерживает последовательности или значения приращения для каждой таблицы (например, увеличение на 2 только для db.node, а не 1).
Лучшее решение, которое я могу придумать, - это иметь триггер BEFORE INSERT и AFTER INSERT, который устанавливает значение сеанса auto_increment_increment на 2 в триггере BEFORE INSERT, а затем сбрасывает его на 1 в триггере AFTER INSERT. Так как он только устанавливает переменную сеанса, он не должен оказывать никакого влияния на другие процессы, и, поскольку это таблица CMS Drupal и ничего сложного не происходит, он кажется безопасным, даже если он кажется неправильным.
Тем не менее, я являюсь промежуточным администратором MySQL (в лучшем случае :)), и, как я уже сказал, это, безусловно, кажется хакерским, поэтому я подумал, что я это опубликую и посмотрю, есть ли у кого-нибудь сильные негативные реакции на это, возможно. какая-то проблема, которую я не предвидел. (И я полагаю, что если никто этого не сделает, то, возможно, кому-то это покажется полезным).