表Message
已經有觸發器。該觸發器內成功運行我有一個insert
聲明:Sql Server 2008觸發器
Insert into tblSettlement (MessageID,Lat,Long) Select Messageid,y,x from inserted
桌上tblSettlement
我已經把該觸發器:
ALTER TRIGGER [dbo].[AddSettlementOnINSERT]
ON [dbo].[TblSettlement]
After INSERT
AS
DECLARE @id Bigint, @Lat Float,@Long Float, @LocName Varchar(200), @Dist float,@upd bit
Set @upd = (SELECT updated FROM inserted)
SET @id = (SELECT MessageID FROM inserted)
SET @lat = (SELECT [Lat] FROM inserted)
SET @Long = (SELECT [Long] FROM inserted)
if (@upd = 0)
begin
declare @table table
(Location Varchar(200),Distance float)
insert into @table
SELECT top 1 Full_Name_nd, SQRT(
POWer(69.1 * (lat - @lat), 2) +
POWer(69.1 * (@long - long) * COS(lat/57.3), 2))As distance
FROM geodb.dbo.geonames where SQRT(
POWer(69.1 * (lat - @Lat), 2) +
POWer(69.1 * (@Long - long) * COS(lat/57.3), 2)) < 1
set @LocName = (select location from @table)
set @Dist = (select distance from @table)
Insert into dbo.tblset2
(Messageid,lat,long,settlement,distance)values(@id,@lat,@long,@locName,@Dist)
end
然而問題是,每當我們使上述觸發,插入停止工作Message
表。
含義:我們希望插入後插入少量列值並嘗試使用同一個表格的觸發器更新另一個表格。這實際上不允許我們插入。
你可以單獨運行'SELECT'查詢並驗證結果嗎?本條款 - 'SQRT(POWer(69.1 *(lat - @ Laat),2)+ POWer(69.1 *(@ Long - long)* COS(lat/57.3),2))<1'對我來說看起來很可疑。 – Yuck 2012-01-03 13:59:53
究竟發生了什麼?是否有錯誤訊息? 「插入停止工作....不允許我們插入」中包含的信息不足以幫助診斷。 **您是否在adhoc環境中運行觸發器的TSQL來調試哪些部件可能會給您帶來麻煩?** – 2012-01-03 14:01:27
感謝您的回覆。是的,我已經隔離運行代碼,它的工作原理....但問題是,當我們使啓用在消息表中的觸發器記錄插入被停止:(:(正在由後端服務管理) – 2012-01-03 14:09:59