sql >> Databasteknik >  >> RDS >> Mysql

Använda ett UUID som primärnyckel med Laravel 5

Vad sägs om den här idén för att lagra en 36chr UUID som binär(16) :

IMO finns det en fördel med att inte ha Laravel som genererar UUID . Nämligen, om nya poster (någon dag i framtiden) infogas i databasen utanför applikationen är UUID-fältet korrekt ifyllt.

Mitt förslag:Skapa en UUID-standardvärdesutlösare med hjälp av migrering

(denna trigger gör att databasservern gör jobbet för att generera UUID varje gång en ny kund infogas)

<?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`');
    }
}

Slutligen, om du vill skaffa en läsbar version av ditt UUID gör du bara följande:

SELECT HEX(UUID) FROM customers;

Hur som helst, hoppas detta hjälper någon :-)



  1. Mät databasprestanda under press

  2. Upptäcka inkrementella databasändringar (Oracle till MongoDB ETL)

  3. Komma igång Justera prestanda i Azure SQL Database

  4. MySQL VARCHAR storlek?