21.09.2020 17:50

Добавление AUTO_INCREMENT для второго столбца в MySQL/MariaDB

Добавление AUTO_INCREMENT для второго столбца в MySQL/MariaDB

В этой статье я объясню, как добавить AUTO_INCREMENT для второго столбца в MySQL/MariaDB. Атрибут AUTO_INCREMENT можно добавить только для одного столбца, который должен быть определен как первичный ключ. Но вы можете реализовать генерацию порядковых номеров для второго столбца с помощью триггера.

Сначала создадим простую таблицу `users`:

--
-- Table structure for table `users`
--
CREATE TABLE IF NOT EXISTS `users` (
	`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
	`second_id` INT UNSIGNED NOT NULL,
	PRIMARY KEY (`id`)
);

Давайте создадим триггер generateSecondId, который будет генерировать порядковые номера для второго столбца каждый раз, когда запись вставляется в базу данных:

DROP TRIGGER IF EXISTS generateSecondId;

DELIMITER $$
CREATE TRIGGER generateSecondId
BEFORE INSERT ON `users`
FOR EACH ROW
BEGIN
  SET @startId = 1000;
  SET NEW.`second_id` = (SELECT IFNULL(MAX(`second_id`), @startId) + 1 FROM `users`);
END $$
DELIMITER ;

Вы можете установить начальное значение с помощью переменной @startId (например, 1000).

Теперь каждый раз, когда запись вставляется в базу данных, будет запускаться объявленный триггер:

INSERT INTO `users` (`id`, `second_id`) VALUES (NULL, '');

SELECT * FROM `users`;

--
--	[output]
--
--	id	second_id
--	1	1001
--	2	1002
--	3	1003
--	4	1004
--	5	1005

Другие статьи