在多批插入批处理数据库之前检查 [英] Check before multirow inserting into databse in a batch

查看:56
本文介绍了在多批插入批处理数据库之前检查的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

专家,

我正在使用SQL Server 2008.

如果我想在表格中插入一行,那么我只需使用以下查询

Hi, experts,
I am using SQL Server 2008.
If I want to insert a row in a table, then I simply use the following query

insert into Table1 (Col1, Col2) values  ('EDJ','LP')





如果我想在插入之前检查,那么我按照



And if I wanna check before inserting then I follow

If not exists (select 1 from Table1 where Col1='EDJ' and  Col2='LP) 
begin 
insert into Table1 (Col1, Col2) values  ('EDJ','LP') 
end 
else 
begin 
Print 'Data already exist.' 
end





现在,对于单个查询中的多行插入,我按照



Now, for multirow inserting in a single query, I follow

insert into Table1 (Col1, Col2) values  ('EDJ', 'LP'), ('AGE', 'LP'), ('DJR', 'VG')



但是,如果我想在一个批次中检查多行插入,那么查询是什么?



提前谢谢。


But if I wanna check for multirow insertion in a single batch, then what would be the query ???

Thanks in advance.

推荐答案

1。首先在表变量中插入值。

2.检查是否存在。

3.插入或显示消息。



1. Insert the value in a table variable first.
2. Check the existence.
3. Insert or show message.

DECLARE @TmpTbl TABLE (Col1 VARCHAR(100), col2 VARCHAR(100))

INSERT INTO @TmpTbl(Col1,Col2)VALUES('EDJ','LP'), ('AGE', 'LP'), ('DJR', 'VG')
  
  IF NOT EXISTS(
         SELECT 1
         FROM   Table1 t1
                INNER JOIN @TmpTbl t2
                     ON  t.Col1 = t2.Col1
                     AND t1.Col2 = t2.Col2
     )
  BEGIN
      INSERT INTO Table1(Col1,Col2)
      SELECT Col1,Col2
      FROM   @TmpTbl tt
  END
  ELSE
  BEGIN
      PRINT 'Data already exist.'
  END   


我的建议是你可以探索tsql Merge语句,如果它是特定于sql server的问题。

代码示例

My suggestion is you can explore tsql Merge statement if it is sql server specific problem.
Code sample
CREATE TABLE Target(FirstName varchar(10), LastName varchar(10));
GO

CREATE TABLE #Source(FirstName varchar(10), LastName varchar(10));
INSERT INTO #Source(FirstName, LastName) VALUES('A','B'), ('C','D'), ('E','F');

Merge [Target] AS T
Using (SELECT * FROM #Source) AS S
ON (T.FirstName = S.FirstName AND T.LastName = S.LastName)
WHEN NOT MATCHED BY Target THEN
	INSERT (FirstName, LastName) VALUES(S.FirstName, S.LastName);
--If you want to do something like insert/update/delete then you can use following statement
--WHEN MATCHED THEN
  --UPDATE SET T.FirstName = S.FirstName, T.LastName = S.LastName;

DROP TABLE #Source;





请访问链接

Link2

Link1


您好,



试试这样< br $>


Hi,

Try like this

INSERT INTO table1(Col1,Col2)
SELECT D.Col1, D.Col2
FROM (SELECT 'EDJ' Col1, 'LP' Col2
      UNION ALL SELECT 'AGE', 'LP'
	 UNION ALL SELECT 'DJR', 'VG') D 
WHERE NOT EXISTS (SELECT 1 FROM Table1 WHERE Col1=D.Col1 AND Col2=D.Col2 )







在直接插入的情况下,例如INSERT INTO Table_Name(Column_Name)VALUES()...使用SELECT语句转到INSERT。





问候,

GVPrabu




In Case of Direct Insert like "INSERT INTO Table_Name (Column_Name) VALUES()..." Go for INSERT with SELECT Statement.


Regards,
GVPrabu


这篇关于在多批插入批处理数据库之前检查的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆