Here's a sample (this is more of a batch process)(Or you could do what Jeff said, or you could write triggers) USE NorthwindGO-- Create some test dataSELECT * INTO EMP1 FROM EmployeesSELECT * INTO EMP2 FROM EmployeesGO-- Take a LookSELECT * FROM EMP1GO-- Create some changesDELETE FROM EMP1 WHERE EmployeeID = 1INSERT INTO EMP1 (LastName, FirstName) SELECT 'Kaiser','Brett'UPDATE EMP1 SET LastName = 'White' WHERE EmployeeId = 4GO-- Find New recordsSELECT l.* FROM EMP1 l LEFT JOIN EMP2 r ON l.EmployeeId = r.EmployeeId WHERE r.EmployeeID Is NULL-- Find deleted recordsSELECT r.* FROM EMP1 l RIGHT JOIN EMP2 r ON l.EmployeeId = r.EmployeeId WHERE l.EmployeeID Is NULL-- Find Updated RecordsSELECT * FROM EMP1 l INNER JOIN EMP2 r ON l.EmployeeId = r.EmployeeId WHERE ( l.LastName <> r.LastName OR l.FirstName <> r.FirstName)GO-- Add New reocrdsINSERT INTO EMP2 (LastName, FirstName) SELECT l.LastName, l.FirstName FROM EMP1 l LEFT JOIN EMP2 r ON l.EmployeeId = r.EmployeeId WHERE r.EmployeeID Is NULL-- Delete missingDELETE FROM EMP2WHERE EmployeeID IN (SELECT r.EmployeeID FROM EMP1 l RIGHT JOIN EMP2 r ON l.EmployeeId = r.EmployeeId WHERE l.EmployeeID Is NULL)-- Update the changes ....update all columns for simplicityUPDATE rSET r.LastName = l.Lastname , r.FirstName = l.FirstnameFROM EMP1 l INNER JOIN EMP2 r ON l.EmployeeId = r.EmployeeId WHERE ( l.LastName <> r.LastName OR l.FirstName <> r.FirstName)GO-- Take a peekSELECT * FROM EMP1UNION ALLSELECT * FROM EMP2ORDER BY EmployeeIDGO -- Clean up this messDROP TABLE EMP1DROP TABLE EMP2GO
Brett8-)SELECT POST=NewId()