sql >> データベース >  >> RDS >> Mysql

Laravel5で主キーとしてUUIDを使用する

    36chr UUIDをBinary(16)として格納するためのこのアイデアはどうですか:

    IMOにはLaravelがUUIDを生成しないという利点があります 。つまり、新しいレコード(将来のある日)がアプリケーションの外部からデータベースに挿入された場合、UUIDフィールドは適切に入力されます。

    私の提案:移行を使用してUUIDデフォルト値トリガーを作成する

    (このトリガーにより、データベースサーバーは、新しい顧客が挿入されるたびにUUIDを生成する作業を実行します)

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

    最後に、人間が読める形式のUUIDを取得する場合は、次の手順を実行してください。

    SELECT HEX(UUID) FROM customers;
    

    とにかく、これが誰かに役立つことを願っています:-)



    1. MySQLで秒を時間値に変更する方法

    2. c3p0で休止状態:createClob()はまだ実装されていません

    3. BOOLEANまたはTINYINTの混乱

    4. SQL Server 2014のプロセッサの選択–パート2