我在SQL Server 2008中创建了两个相同的表。
我需要的是:
将table1
中插入的最新数据添加到table2
。
这可能吗?
服务或触发器或存储过程之类的东西?
我认为我必须使用触发器,但我不知道如何。
我有这两个表:
table1 ( field1,field2,field3 )
table2 ( field1,field2,field3 )
当我插入table1时,我需要更新table2,如下所示:
> IF NotExist(field1=value) in table2 THEN INSERT Into table2 ELSE UPDATE table2
> with new field1 value.
答案 0 :(得分:2)
以下是一个例子:
USE DatabaseName;
GO
IF OBJECT_ID ('Sch.UpdateSecondTable', 'TR') IS NOT NULL
DROP TRIGGER Sch.UpdateSecondTable;
GO
CREATE TRIGGER Sch.UpdateSecondTable
ON FirstTable
AFTER INSERT
AS
INSERT INTO SecondTable
SELECT * FROM Inserted
GO
但是,如果要使用第一个表中插入的值更新第二个表格,请尝试使用此代替INSERT
子句:
UPDATE t2
SET t2.name = t1.name
FROM SecondTable t2
INNER JOIN inserted t1 ON t1.id = t2.id
更新:如果您只想插入第二个tabl3e中不存在的值。如果这些表具有相同的结构,即相同的列号和相同的数据类型。您可以使用EXCEPT
set运算符执行此操作:
UPDATE t2
SET t2.name = t1.name
FROM SecondTable t2
INNER JOIN
(
SELECT * FROM inserted t1
EXCEPT SELECT * FROM SECONDTABLE
) t1 ON t1.id = t2.id
如果不使用标准方式这样做:
UPDATE t2
SET t2.name = t1.name
FROM SecondTable t2
INNER JOIN
(
SELECT * FROM inserted t1
WHERE id NOT IN(SELECT id FROM SECONDTABLE)
) t1 ON t1.id = t2.id
答案 1 :(得分:1)
你需要使用触发器,这不是什么大问题,做一些研究,你会上网。