MySql Insert Select uuid ()

Допустим, у вас есть таблица:

`item`

С полями:

`id` VARCHAR( 36 ) NOT NULL
,`order` BIGINT UNSIGNED NOT NULL

И:

Unique(`id`)

И вы вызываете:

INSERT INTO `item` (
`item`.`id`,`item`.`order`
) SELECT uuid(), `item`.`order`+1

MySql вставит один и тот же uuid во все вновь созданные строки.

Итак, если вы начнете с:

aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa, 0
bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb, 1

, вы получите:

aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa, 0
bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb, 1
cccccccc-cccc-cccc-cccc-cccccccccccc, 1
cccccccc-cccc-cccc-cccc-cccccccccccc, 2

Как я могу указать MySql для создания разных uuid для каждой строки?

Я знаю, что в MSSQL работает следующее:

INSERT INTO item (
id,[order]
) SELECT newid(), [order]+1

nb Я знаю, что могу ВЫБРАТЬ результаты, просмотреть их и выполнить отдельную команду INSERT для каждой строки из моего PHP-кода, но я не хочу этого делать. Я хочу, чтобы работа выполнялась на сервере базы данных, где она должна быть выполнена.

8
задан Alexis Wilke 31 December 2018 в 04:01
поделиться