別のテーブルに行を挿入すると、あるテーブルを更新するトリガーを作成しています。この更新ステートメントでは、最初のテーブルから値を選択する必要があります。次に、この選択した値をupdateステートメントの2か所で使用する必要があります。これが私が今持っているトリガーステートメントです:
CREATE TRIGGER rsrcInsTrig AFTER INSERT ON jos_resources
FOR EACH ROW
UPDATE newtbl
SET subtree_count = subtree_count + 1
WHERE lft <= (SELECT lft FROM newtbl WHERE taxon_id = NEW.taxon_id)
AND rgt >= (SELECT lft FROM newtbl WHERE taxon_id = NEW.taxon_id);
これは問題なく機能しますが、あまりエレガントではありません(「newtbl」はテーブルの適切な名前ではない、と言われる必要はありません。作成しませんでした)。明らかに、サブクエリを1回だけ実行し、値を保存して2回使用したいと思います。これがプログラミング言語の場合、変数を定義します。
私がやりたいことをする方法はありますか?それは本当に問題ですか(「newtbl」には150万を超えるエントリがあるため、クエリは重要ではありません)。このトピックに関する他の質問は結合を使用して解決されましたが、ここでは当てはまらないと思います。