我希望这对于任何 SQL 人来说都是一个足够简单的问题......
我们有一个保存系统配置数据的表,它通过触发器与历史表相关联,因此我们可以跟踪谁更改了什么以及何时更改。
我需要在此表中添加另一个值,但它会经常从代码中更改,并且要求我们不跟踪它的历史记录(我们不想用成千上万的每天更新。
目前我们的触发器是这样的……
CREATE TRIGGER
[dbo].[SystemParameterInsertUpdate]
ON
[dbo].[SystemParameter]
FOR INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON
INSERT INTO SystemParameterHistory
(
Attribute,
ParameterValue,
ParameterDescription,
ChangeDate
)
SELECT
Attribute,
ParameterValue,
ParameterDescription,
ChangeDate
FROM Inserted AS I
END
如果属性列值以特定字符串为前缀(例如“NoHist_”),我希望能够添加一些逻辑来阻止它创建记录
鉴于我几乎没有使用触发器的经验,我想知道如何最好地实现它......我尝试了一个 where 子句,如下所示
where I.Attribute NOT LIKE 'NoHist_%'
但它似乎不起作用。该值仍被复制到历史表中。
您可以提供的任何帮助将不胜感激。
好的 - 正如 Cade Roux 所预测的那样,这在多次更新时都失败了。我将不得不采取一种新的方法来解决这个问题。请问有人有其他建议吗?
伙计们 - 请在这里教育我......为什么在这种情况下 LEFT() 比 LIKE 更可取?我知道我已经接受了答案,但我想知道我自己的教育。