Well, you only said "pull". My experience is that when people use that word, they are looking into selecting data from the database. But I'm not a native speaker of English, so I may have it wrong.
A trigger for the task would look like this:
CREATE TRIGGER FillInTheId ON dbo.Order AFTER INSERT AS
UPDATE Order
SET id = m.id
FROM Order O
JOIN inserted i ON O.<primarykey> = i.<priimarykey>
JOIN Menu M ON O.ItemName = M.ItemName
WHERE i.id IS NULL
The table inserted
holds the rows that were inserted by the INSERT statement that fired the trigger. Keep in mind that a trigger fires one per statement.