有没有办法获取更新/插入数据的表名?
UPDATE
a
SET
a.Salary = a.Salary + 5000
FROM
dbo.Employee a
INNER JOIN
dbo.Status b
ON
a.StatusID = b.ID
WHERE
b.Description = 'Regular'
SELECT @@TableUpdated
输出应为Employee
答案 0 :(得分:0)
这是一个黑客攻击,只能在触发器内完成,但你仍然可以尝试这个并且可以帮助某人获得一个想法:
CREATE TRIGGER z ON dbo.Employee
AFTER UPDATE
AS
IF(UPDATE(a))
BEGIN
IF EXISTS(SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Employee'
AND COLUMN_NAME = 'a')
begin
SELECT 'Employee'
end
ELSE // you can add more if statements
begin
SELECT 'Status'
END
end
创建触发器后,使用您在问题中提供的更新语句,触发器应返回表格的名称。
答案 1 :(得分:0)
您可以解析此sql查询以获取受影响的表的列表,如下所示:
sstupdate
a(dbo.Employee)(tetUpdate)
StatusID
Salary
Salary
dbo.Employee(tetSelect)
dbo.Status(tetSelect)
ID
Description