Мой вопрос довольно сложный, но я подумал, что стоит попробовать.
Короче говоря, я хочу вставить строку с 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.