Можно ли использовать следующий идентификатор auto_increment и вставить его с префиксом с PDO?

Можно ли использовать следующий идентификатор Auto_increment и объединить его с префиксом при вставке?

В моей таблице у меня есть столбец с именем id, и он является основным и автоматически увеличивается.
Теперь я хотел бы сохранить это число с текстом в другом столбце. Это было бы ложью:

id   nr1      nr2   concated
-----------------------------
0    123             123_missing-0
1    234             234_missing-1
2    423      2      423_2
3    342      1      342_1
4    564             564_missing-4

Там, где отсутствует nr2, мне все еще нужно уникальное значение, и поэтому я подумал об использовании префикса с id Concated.

Я использую PHP, PDO и mySQL.

INSERT INTO mytable SET column2 = CONCAT("hello_", id)

Вероятно, это возможно; но это действительно плохая идея.

Strawberry 18.02.2019 15:46

Зачем вам это делать, если вы можете получить эту строку, отформатированную в запросе SELECT? СУХОЙ !

Cid 18.02.2019 15:47

какое отношение к этому имеет PDO? Вы выполняете через MySQL или PHP?

treyBake 18.02.2019 15:48

Почему я это делаю, не должно быть частью вопроса! Я думал сделать это в PHP, но может быть, я могу сделать это в mySQL как автоматическую операцию при вставке?

Björn C 19.02.2019 13:41

@treyBake Причина, по которой я упоминаю PDO, заключается в том, что я нашел некоторую информацию об этом в mysq_li. Но запрос в PDO может работать немного иначе.

Björn C 19.02.2019 13:44
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
5
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я бы предпочел обработать этот вариант использования при запросе базы данных, а не вставке. Похоже, что он отформатирован для отображения, если это так, вы можете написать запрос SELECT следующим образом:

SELECT id, CONCAT("hello_", id)
FROM table;

Будет ли приветствие зависать на идентификаторе столбца в этом запросе? Что делать, если мне нравится новый столбец для Concat? Я хочу сохранить префикс и идентификатор в новом столбце. Может быть, это можно сделать внутри mySql?

Björn C 19.02.2019 13:38

Вы можете сделать это, написав триггер AFTER INSERT, но я бы не стал этого делать, поскольку (а) это плохой дизайн и (б) это повлияет на производительность, если все INSERT запросы. Не могли бы вы сообщить мне, каков вариант использования?

Darshan Mehta 19.02.2019 14:51

Мне нужно найти дубликаты. Объединение Nr1 и Nr2 (Nr1_N2) создает своего рода идентификатор. Могут быть дубликаты этого номера комбайна, но мне нужно их найти. Nr1 всегда есть, а Nr2 нет. Поэтому мне нужно было создать уникальный номер для «Nr2», когда он пуст. Я знаю, что могу создать запрос для выбора и объединить Nr1 и Nr2, но это было бы слишком много работы, чтобы переписать много запросов. Итак, прежде всего, мне нужно было создать что-то уникальное для недостающего Nr2...

Björn C 20.02.2019 15:10

Другие вопросы по теме