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