MySql Insert Select uuid()

Sagen, Sie haben eine Tabelle:

`item`

Feldern:

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

Und:

Unique(`id`)

Und Sie rufen:

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

MySql fügen Sie die gleiche uuid in alle neu erstellten Zeilen.

Also, wenn Sie beginnen mit:

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

Werden Sie am Ende mit:

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

Wie kann ich den Befehl MySql zu erstellen, die eine andere uuid für jede Zeile?

Ich weiß, dass das folgende funktioniert wie erwartet in MSSQL:

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

n.b. Ich weiß, ich könnte WÄHLEN Sie die Ergebnisse, eine Schleife und eine separate INSERT-Befehl für jede Zeile aus meinem PHP-code, aber ich nicht wollen, das zu tun. Ich möchte, dass die Arbeit getan werden auf dem Datenbank-server, wo es gemacht werden soll.

Sie wissen, was Sie auto_increment ist ?
Sind Sie sicher, es ist die Rückkehr der exakt gleichen Wert für jede Zeile? Ich würde erwarten, dass die meisten der Charaktere werden die gleichen in jedem Wert, wenn Sie anrufen, UUID (), also Scannen optisch, Sie sehen das gleiche, aber jeder wird immer noch einzigartig, wenn man genau hinschaut.
Sind Sie sicher? Ich habe versucht, einen ähnlichen test-ich habe unterschiedliche UUIDs.

InformationsquelleAutor Richard | 2011-06-10

Schreibe einen Kommentar