Вставить или обновить в одной таблице из вставки в другую таблицу

Мне нужна помощь, чтобы сделать это:

TABLE POSITION
ID, int (PK)
SN, varchar(10)
Lat, double
Lon, double
etc...

TABLE ACTUAL_POSITION
SN, varchar(10) (PK)
Lat, double
Lon, double

Когда записи вставляются в первую таблицу, соответствующая (по серийному номеру) запись должна быть обновлена ​​во второй таблице. Если в этой таблице нет записи SN, ее следует создать.

Несколько записей вставляются в первую таблицу одновременно, даже для одного и того же SN, поэтому мне нужно извлечь самую последнюю широту и долготу для каждого отдельного SN (когда транспортные средства находятся вне диапазона соединения, они буферизуют данные для отправки, а затем отправьте все это вместе, чтобы принимающая программа записала в sql за один проход) из вставленной таблицы.


person user927586    schedule 04.09.2011    source источник
comment
Как определить самое последнее? Таблица представляет собой неупорядоченный набор строк, поэтому вам нужно определить, что вы подразумеваете под последним, и должен быть какой-то способ понять это из данных. Представьте, что вы бросаете мешок с шариками на пол, а затем спрашиваете кого-то, кто только что вошел в комнату, какой шарик упал на пол последним?   -  person Aaron Bertrand    schedule 04.09.2011


Ответы (1)


Вы можете создать триггер для обновления ACTUAL_POSITION каждый раз, когда в POSITION вставляется новая строка.

Дополнительные сведения о триггерах в SQL Server 2005 см. в разделе . эту статью MSDN.

person dandan78    schedule 04.09.2011
comment
Проблема в том, что если есть две строки с одинаковым SN, какая строка входит в ACTUAL_POSITION? Необходимо определить, как определить последнюю строку... - person Aaron Bertrand; 04.09.2011
comment
Я предполагаю, что OP означает хронологически, и в этом случае я считаю, что триггера будет достаточно. Кроме того, хотя он не предоставил полное определение таблицы, я полагаю, что где-то там есть столбец меток времени. - person dandan78; 04.09.2011
comment
Я думал только о порядке вставки ... но, если это лучше, среди столбцов etc у меня также есть столбец с временной меткой (unix), поэтому я мог бы считать последнюю строку (всегда на SN) с большей временной меткой - person user927586; 04.09.2011