在同一表上触发插入

时间:2018-10-15 13:45:13

标签: sql sql-server

我有一个字段名称为recordID和用户的表。我创建了触发器,以便在添加新记录时在用户列中插入名称。

Recordid  users
xqz       john

现在,我在同一表上添加了新的字段名usersmodify。 我的目标是插入用户修改记录,但保持记录Recordid和用户字段不变。

Recordid  users  usersmodify
xqz       john    david

谢谢

1 个答案:

答案 0 :(得分:0)

因此,您当然可以在单个插入/更新触发器中完成此操作。只需稍作修改,就可以将其放置在触发器中(需要是INSERT,UPDATE触发器)。

--inserts only
UPDATE t
SET users=SUSER_NAME()
FROM TABLE t
inner join inserted i ON i.Recordid=t.Recordid
left join deleted d ON d.Recordid=t.Recordid
where d.Recordid is null

--updates only
UPDATE t
SET usersmodify=SUSER_NAME()
FROM TABLE t
inner join inserted i ON i.Recordid=t.Recordid
inner join deleted d ON d.Recordid=t.Recordid

或者,您可以有两个触发器。一个INSERTED触发器和一个UPDATED触发器。

但是,如果您要授予每个人数据库登录名,那么您将面临各种规模的痛苦。我的建议是将所有调用中的调用用户作为参数传递,并在应用程序中设置字段,并为每个应用程序或开发团队使用一个帐户。