Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Używanie UUID jako klucza podstawowego z Laravel 5

Co powiesz na ten pomysł na przechowywanie 36-chr UUID jako Binary(16) :

IMO jest zaletą tego, że Laravel nie generuje UUID . Mianowicie, jeśli nowe rekordy (kiedyś w przyszłości) zostaną wstawione do bazy danych spoza aplikacji, pole UUID zostanie poprawnie wypełnione.

Moja sugestia:utwórz wyzwalacz wartości domyślnej UUID za pomocą migracji

(ten wyzwalacz powoduje, że serwer bazy danych wykonuje pracę, aby wygenerować UUID za każdym razem, gdy wstawiany jest nowy klient)

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

Na koniec, jeśli chcesz uzyskać czytelną dla człowieka wersję swojego UUID, po prostu wykonaj następujące czynności:

SELECT HEX(UUID) FROM customers;

W każdym razie miej nadzieję, że to komuś pomoże :-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zsynchronizować Mysql z Bigquery w czasie rzeczywistym?

  2. Instalowanie MySQLdb na Mac OS X

  3. MySQL 5.6 DATETIME nie akceptuje milisekund/mikrosekund

  4. Jak uciec od pojedynczych cudzysłowów w MySQL

  5. Entity Framework + MySQL — dlaczego wydajność jest tak straszna?