复写数据库中使用触发器的几点建议
复写数据库中使用触发器的几点建议:
1.要注意复写的数据库中一个地方的触发器能影响所有地方的数据库,所以要在表设计上多加本地条件。
2.尽量使用单一性质(Insert/Update/Delete)的触发器,不要用复合的,复合的最好要分解成多个单一的。
3.最好不要用事务处理。
比如A、B两个是做合并复写的数据库,现在需要在A数据库中Aa表做一个插入一条记录就修改Ab表(没有做复写,只是做为统计从A处添加哪些记录的表) A_ID 字段的值为Aa表ID字段的值触发。
如果只是写成:
Create TRIGGER trigUpdateb ON [dbo].[Aa]
FOR INSERT
AS
Insert into Ab(A_ID) values (select ID from inserted)
GO
那么在没有复写的情况下正确,但有了复写情况下,那么就是错误的,
明天继续写
1.要注意复写的数据库中一个地方的触发器能影响所有地方的数据库,所以要在表设计上多加本地条件。
2.尽量使用单一性质(Insert/Update/Delete)的触发器,不要用复合的,复合的最好要分解成多个单一的。
3.最好不要用事务处理。
比如A、B两个是做合并复写的数据库,现在需要在A数据库中Aa表做一个插入一条记录就修改Ab表(没有做复写,只是做为统计从A处添加哪些记录的表) A_ID 字段的值为Aa表ID字段的值触发。
如果只是写成:
Create TRIGGER trigUpdateb ON [dbo].[Aa]
FOR INSERT
AS
Insert into Ab(A_ID) values (select ID from inserted)
GO
那么在没有复写的情况下正确,但有了复写情况下,那么就是错误的,
明天继续写