表的触发器我有如下表:如何创建SQL Server 2008中
CREATE TABLE [RTS].[MFB]
(
[record_id] [int] IDENTITY(1,1) NOT NULL,
[marker_id] [nvarchar](50) NULL,
[lat] [numeric](38, 8) NULL,
[lng] [numeric](38, 8) NULL,
[address] [nvarchar](512) NULL,
[hash] [smallint] NULL,
[updated] [datetime] NULL,
[first_created_date] [datetime] NULL,
CONSTRAINT [PK_MFB_1]
PRIMARY KEY CLUSTERED ([record_id] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
其中“RECORD_ID”是主键。
我需要在INSERT
操作后创建一个触发器。
的条件是:
- 如果
marker_id
列是新的,INSERT
记录到表和hash
列设置为0; - 如果
marker_id
已经存在,UPDATE
现有记录通过设置新的updated
列; - 如果
marker_id
已经存在,并且“lat”,“lng”和“address”中的任何一个已经改变,则通过设置新的“lat”,“lng”和/或“address”也将“散列”设置为“1”。
基本上,MFB表不应该有重复marker_id
。
如何通过设置触发器来实现此目的?谢谢!
您不能处理是否插入或通过触发器更新,因为它会在插入,更新和删除后触发。你可以根据这个表上的事件来做另一个表(很好的例子是'LOG'表)。 – Susang
我建议你不要使用触发器。我建议你在'marker_id'列上创建一个唯一索引,并确保对此表的更改只能通过执行这些业务规则的存储过程进行。无论如何,你需要展示你已经尝试过的东西 - 没有人会为你写代码。 –