我有一个SQL Server数据库。我希望将一些值插入到多个表中,其中的数据还不存在。
示例:
表一
| 识别号|姓名|材料|其他|
| - ------| - ------| - ------| - ------|
| 1个|铝|二〇一四年|第1版|
| 第二章|镁|二〇一三年|第2版|
我想开发一个存储过程,使它能够向表中插入以下信息:
Aluminum | 2013
我当前的存储过程不允许我这样做,因为它识别Magnesium | 2013
并拒绝2013,因为它正在复制。
此外,我们如何比较多个列值,例如:
INSERT WHERE NOT EXISTS (Material = 2014 AND Other = v3)
当前存储过程:
IF EXISTS(SELECT *
FROM dbo.[01_matcard24]
WHERE NOT EXISTS (SELECT [01_matcard24].Element
FROM dbo.[01_matcard24]
WHERE dbo.[01_matcard24].Element = @new_element)
AND NOT EXISTS (SELECT [01_matcard24].Material
FROM dbo.[01_matcard24]
WHERE dbo.[01_matcard24].Material = @new_material)
)
INSERT INTO dbo.[15_matcard24_basis-UNUSED] (Element, Material)
VALUES (@new_element, @new_material)
1条答案
按热度按时间r3i60tvu1#
1.与其使用
IF
语句,不如将其作为INSERT
的一部分保留为基于集合1.创建
EXISTS
子查询以检测唯一行,而不是单个列