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

他のフィールドの値としてのMySQLのデフォルト値

    これには2つの解決策があります:

    1。可能性:

    関数を使用して、sort_numを単に無視します 設定されていない場合:

    `SELECT * FROM mytable ORDER BY coalesce(sort_num, id)`
    

    coalesce() null以外の最初の値を返すため、sort_numの値を挿入します。 本当にアイテムを並べ替える必要がある場合。

    2。可能性:

    トリガーを作成します。トリガーは、挿入ステートメントで設定されていない場合は自動的に値を設定します。

    DELIMITER //
    
    CREATE TRIGGER sort_num_trigger
    BEFORE INSERT ON mytable
    FOR EACH ROW BEGIN
        DECLARE auto_inc INT;
        IF (NEW.sort_num  is null) THEN
             -- determine next auto_increment value
            SELECT AUTO_INCREMENT INTO auto_inc FROM information_schema.TABLES
            WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME = 'mytable';
            -- and set the sort value to the same as the PK
            SET NEW.sort_num = auto_inc;
        END IF;
    END
    //
    

    このコメントに触発されました

    ただし、これにより並列化の問題が発生する可能性があります(複数のクエリが同時に挿入されます)



    1. Postgres動的クエリ関数

    2. Dockerでmysql_upgradeを実行していますか?

    3. SQLコマンド

    4. Tomcatjdbc接続プールに接続がありません