こんにちはあるいはこんばんは
久しぶりにOracleを使ったシステム構築を行いました
さて、以下のようなことがしたくてGoogleで調べたのですか、実際に実行可能なサンプルをみつけられませんでした
顧客管理テーブルを更新した際に顧客管理テーブルの更新回数という項目を自動で加算したい
ということで、ChatGPT の出番です
oracle テーブルの更新時にトリガーで自身のテーブルの項目を更新する方法 テーブルの項目の番号をインクリメントする方法
プロンプト 一部抜粋ですが完璧な答えが返ってきました
Oracleデータベースで、テーブルの特定の項目(例えば、`sequence_number` 列)の値を更新時にインクリメントするトリガーを作成するには、以下のようにします。以下の例では、`my_table` テーブルの `sequence_number` 列の値をインクリメントするトリガーを示します。 ```sql CREATE OR REPLACE TRIGGER trg_increment_sequence_number BEFORE UPDATE ON my_table FOR EACH ROW BEGIN -- 現在の sequence_number の値をインクリメント :NEW.sequence_number := :OLD.sequence_number + 1; END; / ``` ### トリガーの詳細説明 - **`CREATE OR REPLACE TRIGGER trg_increment_sequence_number`**: トリガーの名前を指定します。ここでは `trg_increment_sequence_number` としています。 - **`BEFORE UPDATE ON my_table`**: `my_table` テーブルが更新される前にトリガーが発火します。 - **`FOR EACH ROW`**: 更新される各行に対してトリガーが適用されます。 - **`:NEW.sequence_number := :OLD.sequence_number + 1;`**: 更新前の値 (`:OLD.sequence_number`) に 1 を足して、新しい値 (`:NEW.sequence_number`) として設定します。 このトリガーにより、`my_table` テーブルの任意の行が更新されるたびに、その行の `sequence_number` 列の値が 1 増加します。
ChatGPT CREATE OR REPLACE TRIGGER trg_increment_sequence_number
BEFORE UPDATE ON my_table
FOR EACH ROW
BEGIN
-- 現在の sequence_number の値をインクリメント
:NEW .sequence_number : = :OLD .sequence_number + 1 ;
END ;
/
ことあとに、テーブルのDDL、更新トリガーのサンプルも示してくれました
プログラム系は本当にChatGPTは強いなと感じました
昔は専門書籍を片手に、最近はGoogleで調べる(ググる)、これからは生成AIに聞く時代ですね