move old data to another table when try to insert data
As a sample:

CREATE TABLE main (id INT, "date" INT);
CREATE TABLE old (id INT, "date" INT);


CREATE TRIGGER old_to_old 
ON main 
FOR INSERT 
AS 
BEGIN
    INSERT INTO old (id, "date") 
        SELECT id, "date" FROM inserted WHERE "date" &lt; 5;
    DELETE FROM main 
        FROM main 
        JOIN inserted ON main.id=inserted.id 
        WHERE inserted."date" &lt; 5;
END;


or

CREATE TRIGGER old_to_old 
ON main 
INSTEAD OF INSERT 
AS 
BEGIN
    INSERT INTO old (id, "date") 
        SELECT id, "date" FROM inserted WHERE "date" &lt; 5;
    INSERT INTO main (id, "date") 
        SELECT id, "date" FROM inserted WHERE "date" &gt;= 5;
END;


INSERT INTO main VALUES (1,1), (4,4), (7,7), (10,10);

SELECT *, 'main' from_where FROM main
UNION ALL
SELECT *, 'old' FROM old;


Output:



id | date | from_where
-: | ---: | :---------
 7 |    7 | main      
10 |   10 | main      
 4 |    4 | old       
 1 |    1 | old       



fiddle (FOR)

fiddle (INSTEAD OF)