2015-11-10 70 views
-1

您好我试图纠正一个Proc的数据加载时要插入基于表2插入记录并更新现有记录

在表1的记录这是我来到与 它有2个条件

1) if the record does not exist create a new row of record 
2) if the record already exist update the record based on keys 

这是我的PROC需要一些帮助,感谢

DECLARE @TableKey INT --(it is passed by the user proc param), 
DECLARE @TableCount INT, 
DECLARE @CLassKey INT, 

SELECT @TableCount= COUNT(*) FROM Table1 WHERE Tablekey= @TableKey 

INSERT INTO @CLassKey 

SELECT Distinct c.PK_ClassKey FROM CLASS as c 
INNER JOIN BOOK as B ON B.FK_ClassKey=C.PK_ClassKEy 

IF ((SELECT COUNT(*) FROM @ClassKey) > 0 AND @TableCount= 0)--- this will check 
BEGIN 
Insert into NOTE 
n.note 
Select 
c.note 
FROM Class where c.FK_Note = n.PK_Note. 
END 

----这将只需插入首次.. 如何d O I更新任何想法,因为记录只插入第一次提出使用相同的格式非常感谢

+0

用MERGE语句,不更新。 – Avi

+0

这是什么语言,伪语言? – Drew

+0

看看'插入重复密钥更新'。 [手册页](http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html)也许这将是有用的。它需要一个独特的钥匙来冲击火灾的更新。这里是一个[视觉示例](http://stackoverflow.com/a/32468519) – Drew

回答

0

试试这个

INSERT INTO table_name (id,col2,col3) 
VALUES (value_id,value2,value3) 
ON DUPLICATE KEY UPDATE 
col2=value2, 
col3=value3; 
相关问题