MySQL Вставить строку при дублировании: добавить суффикс и повторно вставить

Мой вопрос довольно сложный, но я подумал, что стоит попробовать.

Короче говоря, я хочу вставить строку с slug (короткая строка с альфа-каналом и тире: this-is-a-slug). Проблема в том, что slug является уникальным ключом и могут быть дубликаты.

Если есть дубликат, он должен быть вставлен с измененным slug , например с суффиксом: this-is-a-slug-1, если это не удается, увеличьте суффикс: this-is-a -пробка-2.

Вот сложная часть, это должно быть выполнено в MySQL (без использования PHP) и предпочтительно в операторе INSERT (без переменных, процедур и т. Д.)

Я пробовал такое простое решение:

INSERT INTO table (slug) VALUES(IF((SELECT COUNT(slug) FROM table WHERE slug = 'this-is-a-slug') > 0, 'this-is-a-slug-1', 'this-is-a-slug');

Это следует вставить this-is-a-slug-1 , если this-is-a-slug существует, или this-is-a-slug в противном случае.

Однако, как и следовало ожидать, это вызывает ошибку, сообщающую мне, что я не могу использовать оператор FROM в операторе UPDATE или что-то в этом роде.

Вот в чем проблема, надеюсь, кто-нибудь сможет что-то сказать по этому поводу.

PS: Это используется в очень серьезной процедуре обновления новостей RSS, в которой я могу легко проверить слаг в базе данных с помощью php, а затем изменить его, но это удваивает время моего скрипта: |, так что я подумал Я мог бы усложнить задачу для mysql, а не для php.

5
задан Tony Bogdanov 21 November 2011 в 22:20
поделиться