Ako sam te razumeo trebi treba upit koji ce premestiti podatke. SQL ne sadrzi takvu funkciju, ali se to kao sto i sama rekla lako obavlja sa transakcijom koja radi INSERT INTO SELECT pa DELETE FROM. I to je preporuceni nacin kako to uraditi.
Trigger ti je 'funkcija' koja se izvrsava svaki put kada se nesto desi (insert, update, delete) sa podacima u tvojoj tabeli. U tvom slucaju mogla bi definisati trigeer nesto kao:
CREATE TRIGGER ON Arhiva FOR INSERT
AS
DECLARE @Id BIGINT
SELECT @Id = Id FROM INSERTED
IF EXISTS(SELECT * FROM Racuni WHERE Id = @Id)
BEGIN
DELETE FROM Racuni WHERE Id = @Id
END
(Kod sam pisao iz glave mozda ima gresaka, ali vidis poentu)
Znaci ovde svaki put kada nesto upises u tabelu Arhiva upit proveri da li postoji takav upit u Racuni-ma i obrise zapis ako postoji. Uzmi u obzir da ako ovo izvrsis vise neces moci da upises nesto u arhivu a da se to pri tome ne obrise iz Racuna. U svakom slucaju bolje uraditi sa INSERT+DELETE.
Ja bih tvoj problem resio tako sto bih definisao storovanu koja prima Id, i onda transakciono prebacuje podatke i brise stare.
Potpis
Every hamster has his day.