Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sử dụng UUID làm khóa chính với Laravel 5

Còn ý tưởng lưu trữ UUID 36chr dưới dạng Binary (16) này thì sao:

IMO có một lợi thế khi Laravel không tạo UUID . Cụ thể, nếu các bản ghi mới (một ngày nào đó trong tương lai) được chèn vào cơ sở dữ liệu từ bên ngoài ứng dụng, trường UUID sẽ được điền đúng cách.

Đề xuất của tôi:Tạo trình kích hoạt giá trị mặc định UUID bằng cách sử dụng di chuyển

(trình kích hoạt này làm cho máy chủ DataBase thực hiện công việc tạo UUID mỗi khi khách hàng mới được chèn vào)

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

Cuối cùng, nếu bạn muốn nhận được phiên bản UUID của con người có thể đọc được, chỉ cần thực hiện như sau:

SELECT HEX(UUID) FROM customers;

Dù sao, hy vọng điều này sẽ giúp ai đó :-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng là 'chỉ đọc'

  2. Menu đệ quy phân cấp với PHP / MySQL

  3. Sản phẩm cartesian của MySQL giữa hai câu lệnh SELECT

  4. Cách tạo blog trong cơ sở dữ liệu PHP và MySQL - Thiết kế DB

  5. Cách tạo phân trang bằng PDO PHP