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

Brug af en UUID som primær nøgle med Laravel 5

Hvad med denne idé til lagring af en 36chr UUID som binær(16):

IMO er der en fordel ved ikke at have Laravel til at generere UUID . Nemlig, hvis nye poster (en dag i fremtiden) bliver indsat i databasen uden for applikationen, er UUID-feltet korrekt udfyldt.

Mit forslag:Opret en UUID-standardværdiudløser ved hjælp af migreringer

(denne trigger får databaseserveren til at gøre arbejdet med at generere UUID, hver gang en ny kunde indsættes)

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

Til sidst, hvis du vil have en udgave af dit UUID, der kan læses af mennesker, skal du blot gøre følgende:

SELECT HEX(UUID) FROM customers;

I hvert fald, håber dette hjælper nogen :-)



  1. Indlæser klassen com.mysql.jdbc.Driver ... er forældet besked

  2. Hvordan gendannes lige slettede rækker i mysql?

  3. SQL-kommandoer snydeark – Sådan lærer du SQL på 10 minutter

  4. Skinner 'hvor' for mindre tid end forespørgsler