0

次の 2 つのことを行うトリガーを作成しようとしています。

  1. UPDATE完了する前に、テーブル X の行からテーブル Y の行にすべてをコピーします。
  2. テーブル X の行からテーブル Y の行に、UPDATEfrom 番号の後に 1 列をコピーします。1 完了

これは私が今まで持っているものです:

delimiter //
create trigger log
before update on opnaar
for each ROW 

    begin
    set @a = opnaar.id;
    set @c = opnaar.initials;
    set @d = opnaar.revised;
    set @f = opnaar.course;
        insert into log(id,init_old,date_old,date_new,course) values (@a,@c,@d,NOW(),@f);
        end;

    after update on opnaar
    for each ROW
    begin
        set @e = opnaar.initials;
            insert into log(init_new) values (@e);
            end;

しかし、テーブル内の既存の行に値を 1 つだけ追加することはできないと考えました。少なくとも、私がこれをやろうとしている方法ではありません。after updateを最初のアクション内に配置する必要がありますか?

例: 私はこのコンテンツを持っています:

ここに画像の説明を入力

courserevisedinitialsおよびidを別のテーブルにコピーしたい。それが私の最初の行動です。

教師がそのテーブルで何かを更新した後、新しいイニシャル (ただし、古いイニシャルと同じ列にある) をテーブル Y にコピーする必要があります。

私は何を間違っていますか?

ありがとうございました。

4

1 に答える 1

0

CREATE TRIGGER構文を見てください。1 つのトリガーで AFTER オプションと BEFORE オプションを指定することはできません。

  • したがって、2 つの別個のトリガーを作成する必要があります。
  • コードを最適化し、トリガーの本体を結合する場合は、ストアド プロシージャを記述してトリガーから呼び出すことができます。
于 2012-09-17T06:37:14.887 に答える