0
我有用PHP(很久以前)编码的大型系统 - 它在MSSQL数据库上运行查询。我需要的是在数据库级别创建一个触发器,如果更新要将行f_month
更改为99(即包含更新[表]集f_month='99'
),该行将具有my_date <= [24months before now or older]
。我希望这应该是可行的,但没有运气试图弄清楚如何在我自己的..谢谢任何暗示,1月MSSQL - 触发器禁用旧记录beeing更新
--------------工作一行更新,但未能对multiople行更新--------------
CREATE TRIGGER update_fix
ON mytable
FOR UPDATE AS
BEGIN
SET NOCOUNT ON;
if (select f_month from inserted)=99 and (select x_date from mytable where data_id in((select data_id from inserted)))<=DateAdd(yy,-2,GetDate())
BEGIN
RAISERROR('Cannot update old records',16,1)
ROLLBACK TRANSACTION
RETURN;
END
END
GO
上面所示的解决方案的工作就好了,如果一个行beeing更新,但它不影响对工作的更新多行..这是一个问题..任何人都可以帮助我改变触发器工作更新影响多行?应该检查每一行beeing分别更新 - 所以如果有更新的10行,其中一个不应该更新 - 只是不会更新,其他行将成功更新..甚至可能触发?
SQL Server触发器对每个语句执行一次,因此此触发器可能与一组行有关,其中一些*符合您的条件,其中一些*不*。你想在这种情况下做什么?失败整个陈述?允许有效的更改,忽略无效更改?还有别的吗? –
正如Damien所说,使用触发器这一切都是完全可能的,但我们需要更多的规范来指导您朝着正确的方向发展。如果你自己尝试这样做,并改变你的问题来增加更多关于你卡住的地方的细节,可能是最好的。 –
我创建的触发器适用于影响一行的更新,如果更多的行受到影响,触发器无法正常工作..试图改变它很多方式,但没有运气使它工作..不确定它甚至可以工作我想的方式......任何建议?谢谢 –