問題タブ [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.

0 投票する
1 に答える
485 参照

mysql - 10 分後にトリガー (MySql)

私は示されているようにテーブルを持っていますmain。ユーザーはこのテーブルに新しいものを追加できます。次のようなトリガー イベントが必要です。

新しい行が追加されてから 10 分後に実行されますmain

name_idその新しいものを取得しますname

10 分待ちたいので、今は aMySql Eventではなく aが必要です。triggerただし、テーブル全体ではなく特定の行に対してこの新しいイベントをトリガーする方法を理解できませんでした。ありがとう。

0 投票する
2 に答える
532 参照

mysql - データベーステーブルを最適化する MySQL / MariaDB イベント

毎晩データベース テーブルを最適化するために定期的なイベントを作成することに興味があります。

にたどり着きましたSELECT Concat('OPTIMIZE TABLE ', TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='database_name';。MySQLイベントですべての行を実行するにはどうすればよいですか?

私は MySQL / MariaDB イベントを使用することを好み、これに bash を関与させません。ありがとうございました!

0 投票する
1 に答える
465 参照

mysql - 1時間後に特定の値に設定された後、MySQLの列値をリセットする方法は?

こんにちは、私はMySQLのイベントとトリガーにまったく慣れていません。ユーザーがブロックされているかどうかに関係なく、ユーザーに関するデータを保存するために使用されるuserstatus(userid、timestamp、count、flag)というテーブルがあります。カウントが 4 に達すると、フラグは 0 (ブロックされます) になります。フラグが 1 時間ブロックされた後、フラグを自動的に 1 にリセットする方法を教えてください。次のコードを試しました:

これは機能しているように見えますが、効率的ではありません。どんな助けでも大歓迎です。ありがとう!

0 投票する
2 に答える
3586 参照

mysql - MySQL でスケジュールされたイベントを作成する

fouras という名前の MySQL データベース内にテーブル名を提供しています。

ここで、オファーの有効期限が切れているかどうか (end_date > 今日) を定期的に確認したいので、MySQL のスケジュールされたイベントを使用しようとしています。

しかし、このイベントを追加しようとすると、MySQL はエラーをスローします。

0 投票する
2 に答える
83 参照

mysql - 複合ステートメントで EVENT を作成すると、なぜこのエラーが発生したのですか?

このSOの質問から。と混同しましDELIMITERた。また、次のようなことも試しました。

これにより、前述の質問のようなエラーが発生しました:

エラー コード: 1064 SQL 構文にエラーがあります。5 行目の near '' を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

そして、次のSQLを実行した場合:

これは機能し、新しいものをEVENT正常に作成しました。

これら 2 つの SQL の唯一の違いは、最後に使用されDELIMITERDELIMITERものです。誰か私に説明できますか?

どんな助けでも大歓迎です、そして前もって感謝します。

0 投票する
2 に答える
6490 参照

mysql - MySQL でスケジュールされたイベントをログに記録するにはどうすればよいですか?

Eventを作成しましたが、実行時にログを記録する方法、所要時間、エラーがあるかどうかがわかりません。どうすればいいですか?

0 投票する
1 に答える
467 参照

mysql - 2 つの MySQL イベントが同時に実行されるのを避けることはできますか?

MySQL で、少なくとも 30 秒ごとに非常に頻繁に実行したいイベントがあります。

最近更新されたレコードを含むキュー テーブルからのデータを処理しています。ときどき大量の更新を受け取ることがあります。これが発生すると、イベントの実行に通常の 2 ~ 3 秒よりも時間がかかる場合があります。次の予定の時刻になっても実行中であれば、次のイベントは実行を飛ばしたい。

これを行うための最良の方法は、プロセスの開始時に特定のキーを 1 に設定し、プロセスが完了したら 0 に戻す「状態」テーブルを作成することです。次に、イベントを変更して現在のステータスを確認します。

それよりももっと素敵なことをしたいです。完全に欠けている機能はありますか?

グローバル変数を調べましたが、ドキュメントに基づいて、これらはシステム変数に対してのみ許可されているようです。

現在のコード例

これが私が現在テストしているサンプルコードです。

テーブルのロック

コメントに基づいて、テーブルロックを使用していない理由を説明したいと思います。テーブルロックに関する私の経験は限られているので、以下が正しく、理にかなっていることを願っています.

ソース データ テーブル

キュー テーブルの更新を通知するトリガーがあります。これらは、データを読み取って処理するソース データ テーブルです。

私の理解では、READこれらのテーブルをロックしても、読み取りだけの他のイベントはロックされません。ロックを使用する場合はWRITE、現在アクセスしていない行への更新をブロックします。

ターゲット データ テーブル

さまざまなイベントでデータを処理する複数のデータ ソースがあります。これらがターゲット テーブルで修正する行。2 つの異なるイベントが同時に実行され、同じテーブルへの書き込みが行われる可能性があるため、ターゲット テーブルを人為的にブロックしたくありません。

その他のテーブル

ロックの設定とその存在の確認のみを目的とした偽のテーブルを作成できます。これはばかげているように思えます。代わりに、毎回照会するlock_keyおよび列を持つ単一のテーブル ロックを作成したいと思います。is_locked