1

次の表があるとします

create table try  ( name varchar(10), username varchar(10))

username = user()を設定するためのトリガー「ONINSERT」を持つことは可能ですか?

やってみた

create trigger userIns ON INSERT on try for each row set new.username=user();

しかし、これはいくつかの構文エラーをもたらします

BEFORE INSERT、AFTERINSERTに関するドキュメントを見てきました。ON INSERTはどうですか?

そうでない場合、私の最善の策は何ですか?

4

4 に答える 4

3

構文は次のとおりです。

CREATE TRIGGER trigger_name trigger_time trigger_event
ON table_name
FOR EACH ROW
BEGIN
...
END

あなたの構文はtrigger_time部分的に間違っています。

トリガーのアクティブ化時間は、BEFOREまたはAFTERにすることができます。トリガーを定義するときに、アクティブ化時間を指定する必要があります。テーブルで変更が行われる前にアクションを処理する場合はBEFOREキーワードを使用し、変更が行われた後にアクションを処理する必要がある場合はAFTERを使用します。

これを試して :

create trigger userIns BEFORE INSERT on try for each row set new.username=user();

詳細:MYSQLトリガーチュートリアル

于 2013-02-27T04:11:53.973 に答える
0

正しい構文は

Create Trigger trigger_name trigger_time trigger_event
on table_name
for each row
begin
....

end

Trigger_time=>前| trigger_eventの後=>挿入| 更新| 消去

チェックしてください

create trigger userIns INSERT on try for each row begin set new.username=user() end;
于 2013-02-27T04:10:50.567 に答える
0

上記のどれも私の問題ではありませんでした。私は本当に ON INSERT トリガーを探していましたが、MYSQL には存在しません。だから私はBEFORE INSERTを使用しましたが、それはうまくいきます

create trigger userIns BEFORE INSERT on try for each row set new.CREATED_BY=user();
于 2013-03-15T21:22:32.090 に答える