sql >> Database >  >> RDS >> Mysql

Een UUID als primaire sleutel gebruiken met Laravel 5

Wat dacht je van dit idee om een ​​36chr UUID als binair (16) op te slaan:

IMO heeft het een voordeel dat Laravel de UUID niet genereert . Namelijk, als nieuwe records (op een dag in de toekomst) van buiten de applicatie in de database worden ingevoegd, wordt het UUID-veld correct ingevuld.

Mijn suggestie:maak een UUID-standaardwaarde-trigger met behulp van migraties

(deze trigger zorgt ervoor dat de DataBase-server het werk doet om de UUID te genereren telkens wanneer een nieuwe klant wordt ingevoegd)

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

Als u ten slotte een door mensen leesbare versie van uw UUID wilt krijgen, doet u het volgende:

SELECT HEX(UUID) FROM customers;

Hoe dan ook, ik hoop dat dit iemand helpt :-)



  1. JSON_ARRAYAGG() Functie in Oracle

  2. Varchar automatisch verhogen in MySQL

  3. Oracle PL/SQL:Dynamisch SQL-voorbeeld met Execute Immediate

  4. Hekaton met een twist:In-memory TVP's – Deel 1