Mysql
 sql >> Database >  >> RDS >> Mysql

Utilizzo di un UUID come chiave primaria con Laravel 5

Che ne dici di questa idea per memorizzare un UUID 36chr come Binary(16) :

IMO c'è un vantaggio nel non avere Laravel che genera l'UUID . Vale a dire, se nuovi record (un giorno in futuro) vengono inseriti nel database dall'esterno dell'applicazione, il campo UUID viene compilato correttamente.

Il mio suggerimento:crea un trigger di valore UUID predefinito utilizzando le migrazioni

(questo trigger fa in modo che il server DataBase faccia il lavoro per generare l'UUID ogni volta che viene inserito un nuovo cliente)

<?php namespace MegaBank\HighInterestLoans\Updates;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Database\Migrations\Migration;

class MigrationTriggerForCustomers extends Migration
{
public function up()
    {
    
        DB::unprepared('CREATE TRIGGER before_insert_customers
                      BEFORE INSERT ON    
                    `megabank_highinterestloans_customers` 
                      FOR EACH ROW
                      SET new.uuid = UNHEX(REPLACE(UUID(), "-","");');
    }

    public function down()
    {
        DB::unprepared('DROP TRIGGER `before_insert_customers`');
    }
}

Infine, se vuoi ottenere una versione leggibile dal tuo UUID, procedi come segue:

SELECT HEX(UUID) FROM customers;

Comunque, spero che questo aiuti qualcuno :-)