New_Horizons
@New_Horizons
Бред:

Как при INSERT задать значение поля на основе PRIMARY KEY?

Есть таблица
5dce9e6bdfc3c348148225.png

Нужно чтобы в поле number записывался результат конкатенации id и другой строки. Пример:
id = 34893, значит number=1034893 т.е. в начале добавляется 10

Что-то типа того, только это не работает:
insert into `table` (`number`) values (CONCAT("10", ID));

Получилось не очень, в number записалось 100;

Или так нельзя вообще?
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
START TRANSACTION;
insert into `table` 
(`number`) values (0);

update `table` 
set `number` = CONCAT("10", LAST_INSERT_ID()) 
where `id` = LAST_INSERT_ID();
COMMIT;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
erge
@erge
Примус починяю
повесить на таблицу триггер, который будет заполнять поле number

либо...

INSERT INTO `table` (`number`) values (CONCAT("10", (SELECT MAX(ID)+1 FROM `table`)));


Но, это не точно, но вроде должно работать если ID автоинкремент.
Ответ написан
@Nujabes37
:DEATH
Можно с преобразованием типа
INSERT INTO `table` (`number`)
values (CAST((CONCAT('10', (SELECT MAX(ID) + 1 FROM `table` ))) AS UNSIGNED));
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы