前言

参考:https://www.jb51.cc/mssql/76911.html

在mssql中,在记录不存在时插入记录,如果存在则不执行操作

2022年5月22日10:30:28,跟进问题

后续发现接口并发时,还是会有主键重复的问题。所以只使用下面的sql语句,还是无法控制主键重复的并发问题

数据库

相关语句

--创建表
CREATE TABLE Users
(
UserId VARCHAR(50) PRIMARY KEY,
UserName NVARCHAR(20),
Age INT NOT NULL
)

--直接插入
INSERT INTO Users VALUES('12138','Wen',2)

--经sql判断的插入
INSERT INTO Users
SELECT '12138' UserId ,'Wen' UserName,2 Age
FROM(SELECT '12138' UserId ,'Wen' UserName,2 Age) A
LEFT JOIN Users B
ON B.UserId=A.UserId
WHERE B.UserId IS NULL

--清空表数据
TRUNCATE TABLE Users

控制台程序测试

sql帮助类

 1 using System;
 2 using System.Data;
 3 using System.Data.SqlClient;
 4 
 5 namespace ConTest.Core
 6 {
 7     public class SqlDBHelper
 8     {
 9         /// <summary>
10         /// 执行查询语句,返回DataSet
11         /// </summary>
12         /// <param name="sSQLString">查询语句</param>
13         /// <returns>DataSet</returns>
14         public static DataSet Query(string sDBConnectionString, string sSQLString)
15         {
16             using (SqlConnection connection = new SqlConnection(sDBConnectionString))
17             {
18                 DataSet ds = new DataSet();
19                 try
20                 {
21                     connection.Open();
22                     SqlDataAdapter command = new SqlDataAdapter(sSQLString, connection);
23                     command.Fill(ds, "ds");
24                 }
25                 catch (System.Data.SqlClient.SqlException ex)
26                 {
27                     throw new Exception(ex.Message);
28                 }
29                 return ds;
30             }
31         }
32 
33         /// <summary>
34         /// 执行SQL语句,返回影响的记录数
35         /// </summary>
36         /// <param name="SQLString">SQL语句</param>
37         /// <returns>影响的记录数</returns>
38         public static int ExecuteSql(string sDBConnectionString, string SQLString)
39         {
40             using (SqlConnection connection = new SqlConnection(sDBConnectionString))
41             {
42                 using (SqlCommand cmd = new SqlCommand(SQLString, connection))
43                 {
44                     try
45                     {
46                         connection.Open();
47                         int rows = cmd.ExecuteNonQuery();
48                         return rows;
49                     }
50                     catch (System.Data.SqlClient.SqlException E)
51                     {
52                         connection.Close();
53                         throw new Exception(E.Message);
54                     }
55                 }
56             }
57         }
58     }
59 }
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-03-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-09-24
  • 2021-06-02
  • 2022-12-23
  • 2022-12-23
  • 2021-07-27
  • 2022-02-02
相关资源
相似解决方案