Member 14101734 Ответов: 2

Как я могу написать триггер, чтобы вычислить расстояние


у меня есть два стола
1)Таблица Отслеживания
2)Таблица расстояний
Как я могу написать триггер для вычисления расстояния.. поскольку я новичок в БД, я не знаю, как писать, может ли кто-нибудь помочь мне с кодом

Что я уже пробовал:

Столбцов в таблице много
1)лат.
2)длинные
3)Tracktime
4-ступенчатый
5)Игинация
Мне нужен триггер, что каждое vechile расстояние должно храниться в таблице расстояний

CHill60

Если это что-то, что можно вычислить, зачем хранить это в таблице?
Что вы уже пробовали?

[no name]

Можете ли вы подробно изложить свои требования к использованию триггера здесь? Я не вижу никакого требования вычислять расстояние и хранить его в таблице, где вы можете вычислить его, используя данные, уже присутствующие у вас в существующих таблицах.

2 Ответов

Рейтинг:
2

User 10574164

Вы можете использовать такую пользовательскую функцию расстояния, как эта:

CREATE Function MySTDistance(@lat1 float, @lon1 float, @lat2 float, @lon2 float)
returns smallmoney -- kms, use 3960* to return miles
as
    return
     6373*acos((sin(radians(@lat1))*sin(radians(@lat2)))
               +cos(radians(@lat1))*cos(radians(@lat2))*cos(radians(@lon1-@lon2)))
Вам понадобится парочка широта, долгота точки (От &До) для вычисления расстояний, используя UDF в качестве dbo.MySTDistance(...)


Рейтинг:
0

MadMyche

Я бы не стал использовать спусковой крючок.

Что бы я сделал, так это использовал хранимую процедуру для выполнения как основной вставки, так и вычислений и вторичной вставки. Использование SP также позволит значительно упростить тестирование и изменения.

Это предварительный план, с которым я буду работать:
1. извлеките последнюю широту, долготу и время из таблицы отслеживания.
2. Сделайте свои расчеты.
3. Вставьте новые значения таблицы треков.
4. вставьте новые значения таблицы расстояний.