2017-01-11 9 views
0

ここに私のテーブルです。MySQL - 'Updated By'列は、行を変更したユーザーによって自動的に更新されますか?

+-------------------+--------------+------+-----+---------+----------------+ 
| Field    | Type   | Null | Key | Default | Extra   | 
+-------------------+--------------+------+-----+---------+----------------+ 
| ID    | int(11)  | NO | PRI | NULL | auto_increment | 
| Postcode   | varchar(255) | YES |  | NULL |    | 
| Town    | varchar(255) | YES |  | NULL |    | 
| Region   | varchar(255) | YES |  | NULL |    | 
| Company Name  | varchar(255) | YES |  | NULL |    | 
| Fee    | double  | YES |  | NULL |    | 
| Company Benefits | varchar(255) | YES |  | NULL |    | 
| Date Updated  | date   | YES |  | NULL |    | 
| Website   | mediumtext | YES |  | NULL |    | 
| Updated By  | varchar(255) | YES |  | NULL |    | 
| Notes    | varchar(255) | YES |  | NULL |    | 
| LNG    | varchar(255) | YES |  | NULL |    | 
| LAT    | varchar(255) | YES |  | NULL |    | 
+-------------------+--------------+------+-----+---------+----------------+ 

「更新者」列があります。

ユーザーが行を更新すると、「更新者」列は現在ログインしているユーザー名で自動的に更新(または追加している行が挿入されている場合)されます。

多くのおかげ

+0

セッションを使用している場合、最初のあなたがによって意味するか –

+0

http://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html –

+0

そのセッションでテーブルを更新し、セッションを取得'ログインしたユーザー、'データベース 'ユーザーですか?またはアプリケーション層からのユーザーですか? – wajeeh

答えて

0

あなたは明示的にそのことについて確認する必要がありますし、UPDATEが起こっている時はいつでも、あなたは以下の言っ同様にその列を更新する必要があります。それを保証するための最良の方法は、アプリケーション・ロジックは、レコードへUPDATEは、現在ログインしているユーザーの原則から起こっている時はいつでも欄にご記入または

update tbl1 
set ..., 
Updated By = <logged in user name> 
where Id = <some val> 
0

あなたはアップデートでUSER()またはCURRENT_USER()を使用することができます主張していまたはInsert文を使用して必要な効果を達成します。
安全な唯一の方法は、ストアドプロシージャを作成し、目的のテーブルに挿入または更新を提供することです。
実際、この問題は、ここで議論されました。このような
mysql Set default value of a column as the current logged in user

+0

ありがとうございます。数年前のことですが、2つの異なるテーブルを使用するだけでなく、一見単純なタスクではかなり複雑です。だから私は行の更新で同じテーブル内ですべて行うことができるはるかに単純化された方法があるのだろうか? – Slopax

+0

正確な答えは - 決してありません。ただし、テーブルを更新するストアドプロシージャを作成すると、必要な結果が得られます。 – ETech

0

何か!

CREATE TRIGGER `updater`.`tableName_BEFORE_INSERT` BEFORE INSERT ON `tableName` 
FOR EACH ROW 
BEGIN 
    Set New.Updated_By = current_user(); 
END 
関連する問題