@Minusator

Как вставить в строки значение с увеличением числа в БД?

Добрый день.

Есть таблица articles со столбцом image в которую необходимо вставить строки со значением:
catalog/blog-image/1jpg

Как сделать так, чтобы при вставки в последующие строки часть 1...jpg менялась на 2.jpg , 3.jpg и так далее?

Благодарю за помощь
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Akina
Сетевой и системный админ, SQL-программист.
Для решения задачи может быть использован триггер.

Решение 1. Более простое, но может давать дубликаты в конкурентной среде.
CREATE TRIGGER tr_name
BEFORE INSERT
ON articles
FOR EACH ROW
SET NEW.image = CONCAT('catalog/blog-image/', COALESCE((SELECT 1 + MAX(SUBSTRING_INDEX(image, '/', -1)) FROM articles), 1), '.jpg');

DEMO

Решение 2.Устойчиво в конкурентной среде.

Создаётся опорная таблица генерируемых номеров:
CREATE TABLE image_counter (id INT AUTO_INCREMENT PRIMARY KEY);

Триггер использует таблицу для генерации:
CREATE TRIGGER tr_name
BEFORE INSERT
ON articles
FOR EACH ROW
BEGIN
    INSERT INTO image_counter VALUES (DEFAULT);
    SET NEW.image = CONCAT('catalog/blog-image/', LAST_INSERT_ID(), '.jpg');
    DELETE FROM image_counter;
END

DEMO
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы