테이블 Message
에는 이미 트리거가 있습니다. 우리가 트리거 위에 가능하게 할 때마다 문제가 삽입에 대한 작동이 중지된다 그러나Sql Server 2008 트리거
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
: 테이블 tblSettlement
에
Insert into tblSettlement (MessageID,Lat,Long) Select Messageid,y,x from inserted
내가 방아쇠에 놓여있다 : 그 트리거 내에서 성공적으로 실행 나는 insert
문이 Message
테이블.
의미 : 삽입 후 적은 수의 열 값을 가져 와서 같은 테이블의 트리거에서 다른 테이블을 업데이트하려고합니다. 실제로 삽입 할 수 없습니다.
'SELECT' 쿼리를 단독으로 실행하고 결과를 확인할 수 있습니까? 이 절 -'SQRT (69.1 * (lat - @Lat), 2) + POWer (69.1 * (Llong-long) * COS (lat/57.3), 2)) <1 '는 나에게 의심 스럽다. – Yuck
정확히 어떻게됩니까? 오류 메시지가 있습니까? "삽입 기능이 작동하지 않아 ... 삽입 할 수 없으므로"진단에 도움이되는 정보가 충분하지 않습니다. ** 어떤 부분이 문제를 일으킬 수 있는지 디버깅하기 위해 임시 방편으로 트리거의 TSQL을 실행 했습니까? ** –
답장을 보내 주셔서 감사합니다. 그래, 난 고립에서 코드를 실행하고 그것은 작동하지만 .... poblem은 & 때 우리는 메시지 테이블에 트리거 삽입 레코드가 중지됩니다 활성화 (& : (백 엔드 서비스에 의해 관리되고) –