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

MySQLはデフォルトIDUUIDを設定しました

    MySQL 5.7、8.0.12以前

    5.7または8.0.12以降のMySQLは、列のデフォルト値としての関数または式の使用をサポートしていません。

    https://dev.mysql.com/doc /refman/5.7/en/data-type-defaults.html

    別の方法は、トリガーを使用してBEFORE INSERTを監視することです。 目的のテーブルの。

    DELIMITER ;;
    CREATE TRIGGER `foo_before_insert` 
    BEFORE INSERT ON `foo` FOR EACH ROW 
    BEGIN
      IF new.id IS NULL THEN
        SET new.id = uuid();
      END IF;
    END;;
    DELIMITER ;
    

    これにより、INSERTのデフォルト値が変更されます uuid()へのステートメント 明示的に定義されていない限り、値。

    MySQL8.0.13以降

    MySQL8.0.13のリリース 式が括弧で囲まれている場合は、式をデフォルト値として使用できるようになりました。

    db <> fiddle

    https://dev.mysql.com/doc /refman/8.0/en/data-type-defaults.html



    1. SQLとMySQLでストアドプロシージャを作成する利点は何ですか?

    2. このクエリがSQLiteで機能しないのに、MySQLとMSAccessでは正常に機能するのはなぜですか?

    3. 外部キーでリンクされたテーブルにデータを挿入する

    4. エラー-メソッド「X.set_DbConnection(System.Data.Common.DbConnection)」によるメソッド「Y.get_Settings()」へのアクセスに失敗しました