1. テーブルを作成する<br /> まず、2 つのテーブル (users テーブルと number テーブル) を作成します。具体的な設計は次のとおりです。 2. ストアド プロシージャ<br /> ユーザー テーブルにデータを挿入するストアド プロシージャを作成します。作成プロセスは次のとおりです。 コードは次のとおりです 始める #ルーチン本体はここに記述します... n bigint を宣言します。 n = 201121029684 に設定します。 n <= 201121029694 の場合 する ユーザ(student_ID)の値(n)に挿入します。 n = n + 1 と設定します。 終了しながら; 終わり
ストアド プロシージャ全体が記述されました。もちろん、これは非常に単純な例であり、参考用です。 3. トリガー トリガーを書き込む前に、まずユーザーデータをクリアします テーブルユーザーを切り捨てます。 これで 2 つのテーブルができました。必要なのは、ユーザーにデータを挿入すると、それに応じて番号も変更されるようにすることです。 たとえば、数値テーブルには id=1、num=0 という初期データがあります。 ユーザーにデータを挿入すると、数値テーブルの num フィールドが 1 増加し、ユーザー数が記録されます。 この小さな機能を実装してみましょう。 ユーザーテーブルを右クリックし、「テーブルのデザイン」を選択します。
始める 更新番号 num = (users から count(*) を選択) を設定します。 終わり 保存した後、users テーブルに新しいデータを追加し、number のデータを確認します。number テーブルのデータも魔法のように変更されていることがわかります。ぜひ試してみてください。 追記: ストアド プロシージャはプログラマー自身が実行する必要がありますが、トリガーは、その名前が示すように自動的にトリガーされます。 4. カーソルの使用<br /> ここで実行したいのは、student_ID フィールドに 100 を追加することです。この例を使用して、カーソルの使用方法を簡単に説明します。 ストアドプロシージャを作成します。作成方法については上記の手順を参照してください。ストアド プロシージャ コードは次のとおりです。 始める #ルーチン本体はここに記述します... tmp bigint のデフォルトを 0 と宣言します。 宣言 cur CURSOR FOR SELECT student_ID FROM users; -- カーソルを定義します/* 02000 次のいずれかの例外が発生しました: SELECT INTO ステートメントまたは INSERT ステートメントのサブクエリの結果は空のテーブルになります。 検索された UPDATE または DELETE ステートメント内で識別された行数は 0 です。 FETCH ステートメントで参照されるカーソル位置は、結果テーブルの最後の行の後にあります。 */ SQLSTATE '02000' の CONTINUE HANDLER を宣言し、tmp を 0 に設定します。 OPEN cur; -- カーソルを開きます FETCH cur INTO tmp; -- カーソルを 1 ステップ下に移動します WHILE (tmp != 0) する select tmp; -- tmp を印刷すると、tmp がポインタのようなものだということが分かります。これは、先頭の最初の行を指します。カーソルが 1 ステップ移動すると、次のレコード行を指します。UPDATE users 学生IDをtmp + 100に設定します ここで、student_ID = tmp; cur を tmp にフェッチします。 終了しながら; CLOSE cur; -- カーソルを閉じる END 上記のストアド プロシージャを実行すると、ユーザーのデータが希望どおりに変更されていることがわかります。 以下もご興味があるかもしれません:
|
<<: JavaScript における clientWidth、offsetWidth、scrollWidth の違い
1 要件の概要MySQL5.6本番データベースの複数のテーブルのデータは、Oracle11gデータウ...
最近、友人が私に質問をしました。ページをレイアウトすると、画像の下に 1 ~ 2 ピクセルの空白があ...
Truncate table ステートメントは、テーブル内のすべてのデータを削除/切り捨てるために使...
rpmインストールパッケージをダウンロードするMySQL公式サイト: https://dev.mys...
例示するフロントエンド開発では、セルの幅を制限し、コンテンツが制限を超える部分に省略記号を表示する必...
目次1.1. IP経由のコンテナ間のネットワークアクセス1.2. コンテナ名またはコンテナIDによる...
コードをコピーコードは次のとおりです。 <!DOCTYPE html> <html...
more は、最もよく使用されるツールの 1 つです。最も一般的な使用方法は、出力コンテンツを表示し...
デスクトップ システムをダウンロードするには、Ubuntu の公式 Web サイト (https:/...
問題を解決するBootstrap は、次の問題を解決する CSS フレームワークです。デバイス間での...
実際に参加したプロジェクトでは、MySQL テーブルのデータ量が数百万に達すると、通常の SQL ク...
1. 正常に生成されたアイコン ファイルをダウンロードし、名前を favico.ico に変更して、...
数日前、CSS を使用して三角形の矢印を実装する方法について記事を書きました。 目的の効果は達成され...
Vue プロジェクトで mock.js を使用する開発ツールの選択: Vscode 1. コマンドラ...
目次ネイティブJS GETリクエストの送信方法投稿リクエストの送信方法パラメータ付きのGETリクエス...