我有由外部 CRM 部分创建和编辑的数据库,其中某些表在触发后有多个(最多 2 个)。这是因为 CRM 自动生成了 1 个触发器(我对其控制有限),另一个包含我的代码。
CRM 触发器为插入的数据行生成主键。我的触发器需要访问该主键才能将其作为外键写入另一个表。我用
Select @id=max(id) from mytable
因为 Scope_Identity 没有以某种方式产生预期的结果。
这一直有效,直到我让 CRM 重新创建表和它自己的触发器。我的触发器选择的那个表的最大 id 似乎总是actual_id - 1。
当我使用相同的代码更改我的触发器时,它总是让程序再次工作。
我的问题是:SQL Server(我使用的是 SQL Server 2008)是否按创建时间设置其触发顺序?
并且是
sp_settriggerorder @triggername='mycustomtrigger', @order='Last', @stmttype='INSERT'
每次 CRM 重新创建其触发器时,我是否要永久更改它,或者我是否必须再次调用该过程?(使用 DROP 和 CREATE,而不是 ALTER)
希望这个问题的答案能帮助看到同样问题的人。
问候