詳細には立ち入らずに、コードに直接進みましょう。一緒にコミュニケーションを取り、学びましょう。 月ごとにテーブルを作成するストアド プロシージャを作成します。SQL ステートメントは次のとおりです。 区切り文字 // 存在する場合はプロシージャを削除してください create_table_by_month // プロシージャ `create_table_by_month`() を作成します。 始める #-- 後で使用する変数を事前に宣言します。DECLARE nextMonth varchar(20); nextTABLE varchar(20) を宣言します。 csql varchar(5210) を宣言します。 outputParam int を宣言します。 tableName_1 varchar(20) を宣言します。 tableName_2 varchar(20) を宣言します。 table_prefix varchar(20) を宣言します。 #--次の月を取得します SELECT SUBSTR(replace(DATE_ADD(CURDATE(), INTERVAL 1 MONTH), '-', ''), 1, 6) INTO @nextMonth; #--上記の SQL ステートメントを分割して分析します。 #MySQL 時間関数 date_add() は、日付に時間間隔を追加します。この SQL は、現在の日付から 1 か月後の日付を意味します #select DATE_ADD(CURDATE(), INTERVAL 1 MONTH); ##戻る 20201006 #select replace('2020-10-06', '-', ''); ##戻る 20201006 #select replace(DATE_ADD(CURDATE(), INTERVAL 1 MONTH), '-', ''); ## 202010に戻る #SUBSTR(20201006,1,6)を選択します。 ## 変数 @nextMonth に値を割り当てます #SELECT SUBSTR(20201006,1,6) INTO @nextMonth; # 表1 #テーブルプレフィックス変数値をtd_user_banks_log_に設定します @table_prefix を 'td_user_banks_log_' に設定します。 #テーブル 1 の名前を定義します SET @tableName_1 = CONCAT(@table_prefix, @nextMonth); ##テーブルを作成するためのSQL文を定義します。set @csql=concat("create table if not exists ",@tableName_1,"( `id` int(11) NOT NULL AUTO_INCREMENT, `app_id` varchar(100) NULLではない、 `user_id` int(11) NOT NULL DEFAULT '0' COMMENT 'ユーザーID', `type` tinyint(2) NOT NULL DEFAULT '1' COMMENT '1 サインイン報酬 2 アクティビティ報酬 3 引き換え', `gold_coin` int(11) NOT NULL, `remarks` varchar(200) NOT NULL DEFAULT '' COMMENT 'Remarks', `create_at` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP、 主キー (`id`)、 キー `app_id` (`app_id`), キー `user_id` (`user_id`), キー `type` (`type`), キー `create_at` (`create_at`) )ENGINE=InnoDB デフォルト文字セット=utf8mb4;"); #PREPARE はじめに: ## このステートメントは、ステートメントを準備し、後で参照できるように statement_name という名前を指定するために使用されます。ステートメント名では大文字と小文字は区別されません。 ##preparable_stmt は、リテラル文字列またはステートメント テキストを含むユーザー変数にすることができます。テキストは複数の SQL ステートメントではなく、単一の SQL ステートメントを表す必要があります。 @csql から create_stmt を準備します。 create_stmt を実行します。 割り当てを解除して、create_stmt を準備します。 # 表 2 と表 1 は同じ SQL なので、ここでは紹介しません。 @table_prefix を 'td_sign_log_' に設定します。 @tableName_2 を CONCAT(@table_prefix, @nextMonth); に設定します。 @csql=concat("テーブルが存在しない場合は作成する ",@tableName_2,"( `id` int(11) NOT NULL AUTO_INCREMENT, `app_id` varchar(100) NULLではない、 `user_id` int(11) NULLではない、 `day` int(11) NOT NULL デフォルト '0' コメント 'day', `sign_type` tinyint(2) NOT NULL DEFAULT '1' COMMENT '1 サインイン 2 メイクアップサインイン 3 累積報酬', `type` tinyint(2) NOT NULL DEFAULT '1' COMMENT '1 gold coin', `num` int(11) NOT NULL デフォルト '0', `data_id` int(11) NOT NULL デフォルト '0', `create_at` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP、 主キー (`id`)、 キー `app_id` (`app_id`), キー `user_id` (`user_id`), キー `type` (`type`), キー `data_id` (`data_id`), キー `create_at` (`create_at`)、 キー `sign_type` (`sign_type`), キー `day` (`day`) )ENGINE=InnoDB デフォルト文字セット=utf8mb4;"); @csql から create_stmt を準備します。 create_stmt を実行します。 割り当てを解除して、create_stmt を準備します。 SELECT COUNT(1) INTO @outputParam FROM information_schema.`TABLES` WHERE TABLE_NAME in (@tableName_1, @tableName_2); @出力パラメータを選択します。 終わり // 区切り文字 ; #-- 毎月、現在の月のテーブルに対してスケジュールされたタスクを作成します。 イベント `create_table_by_month` を作成します。スケジュールは 1 か月ごとに '2020-09-06 12:40:00' で開始します。完了時に保持しないで有効にします。create_table_by_month() を呼び出します。 常識的なヒント: スケジュールされたタスクで、特定の時間に実行するストアド プロシージャ SQL1 ステートメントを呼び出します。指定する時間は将来の時間である必要があります。 #ストアド プロシージャを作成するための SQL ステートメントを表示します。 作成手順を表示 create_table_by_month_G #ストアドプロシージャを削除します: create_table_by_month が存在する場合はプロシージャを削除します。 #スケジュールされたタスクドロップイベントを削除します。create_table_by_month1; 上記のストアドプロシージャSQL文とタイマーSQL文は、本番環境で使用されます。 #エラーのトラブルシューティング: MySQL ログにエラーが報告されているのがわかりました。元のストアド プロシージャの SQL 文で追加されたインデックス キー フィールドが、たまたまテーブルに存在しないフィールドだったため、次のエラーが報告されました。したがって、ストアド プロシージャのインデックス キー フィールドを削除すると、SQL は正常になります。
上記のストアド プロシージャは、このブロガーのオンライン ビジネス環境の SQL のみです。直接適用しないでください。発生した損失は、このブログ投稿とは何の関係もありません。この記事は学習とコミュニケーションを本来の目的としてここに公開されており、皆様の学習とコミュニケーションの参考としてのみご利用ください。 これで、MySQL のストアド プロシージャを使用して月別のテーブルを作成する手順に関するこの記事は終了です。MySQL で月別のテーブルを作成する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: Electronで不規則な形状の透明部分をクリックする実装
目次使用されるAPI簡単な例人.ts親コンポーネントサブコンポーネント効果要約する使用されるAPI ...
1: 速度と読み込み方法の違いdivとtableの違いは速度ではなく、読み込み方法です。速度はネット...
Vim は Linux でよく使用されるテキスト エディターです。 Vim は、Sublime や ...
HTML は、World Wide Web 上で公開するために使用されるハイブリッド言語です。 XH...
1. トップレベルの使用法1. cnpmをインストールする npm i -g cnpm --regi...
通常、国喪の日、大地震の日、清明節には、ウェブサイト全体を灰色にして、故人への哀悼の意を表します。そ...
インデックスを追加すると、クエリの効率が向上します。インデックスを追加するということは、ドキュメント...
SQLのlike文では、例えば SELECT * FROM user WHERE username...
目次背景コンテナを固定し、数字を上にスクロールすることで、スクロールホイールと同様の効果を実現します...
目次序文最適化ソ連オンデマンドインポート1. ルーティングファイルでコンポーネントをオンデマンドでイ...
ページめくりの問題のシナリオBとCは同じページ(表と裏)にありますページをめくって A をカバーした...
この記事の例では、登録とログインの効果を実現するためのVUEの具体的なコードを紹介します。具体的な内...
この記事の例では、ショッピングカートの簡単な追加と削除を実現するためのJSの具体的なコードを参考まで...
この記事は、IDEA で Web プロジェクトを作成し、Tomcat を構成する方法についての統合記...
目次1. キーワード2. 脱構築3. 文字列4. 正規化5. 配列6. 機能7. オブジェクト8.シ...