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

MySQLトリガーを使用して新しいレコードを挿入した後にテーブル列を更新する

    列に値を設定しようとしている方法は更新です。 挿入後に実行しているため 操作が完了しました。

    実際にはbeforeが必要です 引き金。

    また、同じテーブルの主キー列に同じ新しい自動インクリメント値を割り当てるには、information_schema.tablesから取得する方が適切です。 。

    delimiter //
    drop trigger if exists bi_table_name //
    
    create trigger bi_table_name before insert on table_name
    for each row begin
      set @auto_id := ( SELECT AUTO_INCREMENT 
                        FROM INFORMATION_SCHEMA.TABLES
                        WHERE TABLE_NAME='table_name'
                          AND TABLE_SCHEMA=DATABASE() ); 
      set new.priority= @auto_id;
    end;
    //
    
    delimiter ;
    

    :同じ名前やアクションの事前定義されたトリガーがないことを確認してください。トリガーがある場合は、新しいトリガーを作成する前にドロップしてください。

    観察
    last_insert_id()に関するmysqlのドキュメント

    したがって、last_insert_id()によって異なります およびauto_increment バッチ挿入のフィールド値は信頼できないようです。



    1. MySQLの頻度から十分位数を計算する

    2. MySQL接続を閉じる(PHP)

    3. 最新バージョンのMariaDBサーバーを使用した最新のJiraへのアップグレード

    4. Oracle:RAISE_APPLICATION_ERRORを使用する状況はどうなっていますか?