我想我已经接近这个了,我似乎无法做到这一点。我也浏览了很多问题和答案,要么我找不到答案,要么我不明白其他人的问题,所以如果这是重新发布,请原谅。
就“代替”触发器的想法而言,我想做的似乎非常基本。我在 SQL Server 2008 中工作。我有一个无法直接更新的视图,因此我需要一个替代更新触发器来更新其中一个基础表。问题中表的主键不会包含在 Update 语句中,因此我必须使用外键进行选择。
我正在尝试获取 Update 语句的 Where 子句中提供的外键,但我必须使用错误的语法。我很确定我必须能够获得“Where”值,因为它们似乎很可能被用作基础表的键。所以,鉴于声明...
UPDATE table1 SET field1 = 'value1' WHERE key_field = 'key_value'
如何访问获取触发器定义中的“key_value”?我试过以下...
DECLARE @pk INT
SELECT @pk = p_key
FROM dbo.ptable p, UPDATED u
WHERE p.f_key = u.key_field
而这也是...
DECLARE @pk INT
SELECT @pk = p_key
FROM dbo.ptable
WHERE f_key = (SELECT key_field
FROM UPDATED)
但这些似乎都不适合我。我很确定我使用...正确获取更新值
DECLARE @uValue VARCHAR
SELECT @uValue = field1
FROM UPDATED
我希望能够使用派生的主键进行这样的插入或更新......
INSERT INTO dbo.xtable (fieldx) VALUES (@uValue) WHERE p_key = @pk;
或者
UPDATE dbo.xtable SET fieldx = @uValue WHERE p_key = @pk;
希望我说得通,而且我离得太远了。谢谢你的帮助。