問題タブ [mysql-event]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 10 分後にトリガー (MySql)
私は示されているようにテーブルを持っていますmain
。ユーザーはこのテーブルに新しいものを追加できます。次のようなトリガー イベントが必要です。
新しい行が追加されてから 10 分後に実行されます
main
name_id
その新しいものを取得しますname
10 分待ちたいので、今は aMySql Event
ではなく aが必要です。trigger
ただし、テーブル全体ではなく特定の行に対してこの新しいイベントをトリガーする方法を理解できませんでした。ありがとう。
mysql - データベーステーブルを最適化する MySQL / MariaDB イベント
毎晩データベース テーブルを最適化するために定期的なイベントを作成することに興味があります。
にたどり着きましたSELECT Concat('OPTIMIZE TABLE ', TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='database_name';
。MySQLイベントですべての行を実行するにはどうすればよいですか?
私は MySQL / MariaDB イベントを使用することを好み、これに bash を関与させません。ありがとうございました!
mysql - 1時間後に特定の値に設定された後、MySQLの列値をリセットする方法は?
こんにちは、私はMySQLのイベントとトリガーにまったく慣れていません。ユーザーがブロックされているかどうかに関係なく、ユーザーに関するデータを保存するために使用されるuserstatus(userid、timestamp、count、flag)というテーブルがあります。カウントが 4 に達すると、フラグは 0 (ブロックされます) になります。フラグが 1 時間ブロックされた後、フラグを自動的に 1 にリセットする方法を教えてください。次のコードを試しました:
これは機能しているように見えますが、効率的ではありません。どんな助けでも大歓迎です。ありがとう!
mysql - MySQL でスケジュールされたイベントを作成する
fouras という名前の MySQL データベース内にテーブル名を提供しています。
ここで、オファーの有効期限が切れているかどうか (end_date > 今日) を定期的に確認したいので、MySQL のスケジュールされたイベントを使用しようとしています。
しかし、このイベントを追加しようとすると、MySQL はエラーをスローします。
mysql - 複合ステートメントで EVENT を作成すると、なぜこのエラーが発生したのですか?
このSOの質問から。と混同しましDELIMITER
た。また、次のようなことも試しました。
これにより、前述の質問のようなエラーが発生しました:
エラー コード: 1064 SQL 構文にエラーがあります。5 行目の near '' を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
そして、次のSQLを実行した場合:
これは機能し、新しいものをEVENT
正常に作成しました。
これら 2 つの SQL の唯一の違いは、最後に使用されDELIMITER
たDELIMITER
ものです。誰か私に説明できますか?
どんな助けでも大歓迎です、そして前もって感謝します。
mysql - MySQL でスケジュールされたイベントをログに記録するにはどうすればよいですか?
Eventを作成しましたが、実行時にログを記録する方法、所要時間、エラーがあるかどうかがわかりません。どうすればいいですか?
mysql - 2 つの MySQL イベントが同時に実行されるのを避けることはできますか?
MySQL で、少なくとも 30 秒ごとに非常に頻繁に実行したいイベントがあります。
最近更新されたレコードを含むキュー テーブルからのデータを処理しています。ときどき大量の更新を受け取ることがあります。これが発生すると、イベントの実行に通常の 2 ~ 3 秒よりも時間がかかる場合があります。次の予定の時刻になっても実行中であれば、次のイベントは実行を飛ばしたい。
これを行うための最良の方法は、プロセスの開始時に特定のキーを 1 に設定し、プロセスが完了したら 0 に戻す「状態」テーブルを作成することです。次に、イベントを変更して現在のステータスを確認します。
それよりももっと素敵なことをしたいです。完全に欠けている機能はありますか?
グローバル変数を調べましたが、ドキュメントに基づいて、これらはシステム変数に対してのみ許可されているようです。
現在のコード例
これが私が現在テストしているサンプルコードです。
テーブルのロック
コメントに基づいて、テーブルロックを使用していない理由を説明したいと思います。テーブルロックに関する私の経験は限られているので、以下が正しく、理にかなっていることを願っています.
ソース データ テーブル
キュー テーブルの更新を通知するトリガーがあります。これらは、データを読み取って処理するソース データ テーブルです。
私の理解では、READ
これらのテーブルをロックしても、読み取りだけの他のイベントはロックされません。ロックを使用する場合はWRITE
、現在アクセスしていない行への更新をブロックします。
ターゲット データ テーブル
さまざまなイベントでデータを処理する複数のデータ ソースがあります。これらがターゲット テーブルで修正する行。2 つの異なるイベントが同時に実行され、同じテーブルへの書き込みが行われる可能性があるため、ターゲット テーブルを人為的にブロックしたくありません。
その他のテーブル
ロックの設定とその存在の確認のみを目的とした偽のテーブルを作成できます。これはばかげているように思えます。代わりに、毎回照会するlock_key
および列を持つ単一のテーブル ロックを作成したいと思います。is_locked