如何在表中插入用户名记录

时间:2016-11-13 18:09:25

标签: sql sql-server tsql

我有一张桌子。在此表中,我有两列 - ' insert_name'和' modified_name'。我需要在此列中插入有关谁将数据插入表中的数据(' insert_name')以及谁在表中更改了这些数据(modified_name)。怎么做?

enter image description here

3 个答案:

答案 0 :(得分:1)

您正在寻找基本的DML语句。

如果您的记录已经在表格中,那么您需要UPDATE它。否则,当您要将记录添加到目标表中并且它已经存在于目标表中时,您正在查找INSERT INTO语句。

使用第一个ID更新记录信息的示例:

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

插入新记录的示例:

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

如果您正在寻找对这些列的自动更改,那么您需要查看触发器

请记住,您经常会发现连接到数据库的应用程序使用单个数据库用户,在这种情况下,您可能知道应用程序本身的内容(谁插入,谁更新)。这确实消除了触发器,并将任务直接放在应用程序层中的简单插入/更新命令上。

答案 1 :(得分:0)

您可以使用CURRENT_USER函数查找进行更改的用户的名称。

然后可以使用此函数的值来更新相应的列。此更新可以作为INSERT或UPDATE语句的一部分完成。或者使用INSERT或UPDATE触发器。

如果可以,我会个人避免触发。

答案 2 :(得分:0)

对于这两列,将Current_User添加为默认约束。 第一次插入语句将使用当前登录用户名保存它们。对于更新,使用与Modified_Name列相同的Current_User语句编写Update触发器。

当且仅当您的应用程序业务逻辑无法更新列modified_nme时,才会转到Trigger。

请参阅Current_Use的使用 https://msdn.microsoft.com/en-us/library/ms176050.aspx