2016-11-13 12 views
0

私はテーブルを持っています。この表には、「insert_name」と「modified_name」という2つの列があります。この列には、誰がデータをテーブルに挿入したのか( 'insert_name')、そしてテーブルのこれらのデータを誰が変更したのか(modified_name)のデータを挿入する必要があります。どのようにそれを行うことができますか?テーブルにユーザー名レコードを挿入する方法

enter image description here

+0

の使用は、それを説明するために、いくつかのグラフィカル表示やデータの追加を参照してください。 –

+0

私はグラフィック表現を追加しました –

答えて

1

あなたは、基本的なDML文を探しています。

レコードが既にテーブルにある場合は、UPDATEが必要です。それ以外の場合、レコードを追加しようとしていて、宛先テーブルにレコードが存在しない場合は、INSERT INTOステートメントを探しています。新しいレコードを挿入する

UPDATE yourtable SET insert_name = 'value1', modified_name = 'value2' WHERE id = 1 

例:最初のIDを持つレコードの情報を更新する

INSERT INTO yourtable(id, company_name, product_name, insert_name) 
VALUES (1, 'Google', 'PC', 'value1') 

あなたはこれらの列への自動変更を探している場合は、あなたはを検討する必要がありますトリガー


少なからずあなたがデータベースに接続するアプリケーションは、おそらく(誰が誰を更新、挿入)アプリケーション自体の中にコンテキストを知っている場合には、単一のデータベース・ユーザーを使用していることを見つけることを覚えておいてください。これにより、トリガーが排除され、アプリケーションレイヤーからの簡単な挿入/更新コマンドでタスクが実行されます。

0

CURRENT_USER関数を使用して、変更を行ったユーザーの名前を見つけることができます。

この関数の値を使用して、適切な列を更新できます。この更新は、INSERTまたはUPDATEステートメントの一部として実行できます。または、INSERTトリガーまたはUPDATEトリガーを使用します。

個人的に私はトリガーを避けることができます。

0

これらの2つの列では、Current_UserをDefault制約として追加します。 初めてInsert Statementを使用すると、現在のログインユーザー名で保存されます。更新のために、列Modified_Nameに対して同じCurrent_UserステートメントでUpdateトリガーを書き込みます。

アプリケーションビジネスロジックが列modified_nmeを更新できない場合にのみ、トリガーに移動します。

はCurrent_Use https://msdn.microsoft.com/en-us/library/ms176050.aspx

関連する問題