2

私は答えを探してウェブをスキャンしてきましたが、ほとんどの人はプログラミング言語を使って答えます。現在MySQLサーバーを実行していて、テーブルを追跡したいのですがstaff、スタッフの位置が更新されると、トリガーがstaff_auditテーブルに値を挿入する必要があります。ここで大きな問題は、ユーザーIDにアクセスするにはどうすればよいですか?

これまでのコード:

CREATE TRIGGER staff_aft_update 
  AFTER UPDATE ON staff 
  FOR EACH ROW 
    INSERT INTO staff_audit 
      ( sau_st_staffno, sau_st_position_before, 
        sau_st_position_after, sau_user_id, ts) 
    VALUES 
      ( old.st_staffno, old.st_position, 
        new.st_position, userid);

useridIDを挿入したい場所です。前もって感謝します。

4

2 に答える 2

0

私が正しく理解していれば、あなたuseridUPDATE?それuseridがMySQLユーザー名の場合は、 SUBSTRING_INDEX(USER(),'@',1);を使用してください。useridそれ以外の場合は、アプリケーションコードからを提供する必要があります。

于 2012-05-09T08:50:45.497 に答える
-1

次のリンクは、答えを見つけるのに役立ちます。これにより、MySQLの情報関数のリストが表示されます。

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html

実際、実装する必要のあるロジックに応じて、USER()がアプリケーションコードからユーザーIDを渡す必要があるという情報関数を使用する必要があります。

情報関数を使用している場合、関数userの形式はuser @ localhostであるため、要件については、「@」記号で始まるすべてを切り捨てる必要があります。これが役立つことを願っています。

于 2012-05-09T09:39:41.430 に答える