表的觸發器我有如下表:如何創建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'列上創建一個唯一索引,並確保對此表的更改只能通過執行這些業務規則的存儲過程進行。無論如何,你需要展示你已經嘗試過的東西 - 沒有人會爲你寫代碼。 –