INSERT INTO如果不存在SQL服务器

Sim*_*ely 14 c# sql sql-server database-design

我有一个数据库结构如下:

用户

userid (Primary Key)
username
Run Code Online (Sandbox Code Playgroud)

groupid (PK)
groupName
Run Code Online (Sandbox Code Playgroud)

user_groups

userid (Foreign Key)
groupid (Foreign Key)
Run Code Online (Sandbox Code Playgroud)

用户第一次登录时,我希望将他们的信息添加到users表中.所以基本上我想要的逻辑是

if (//users table does not contain username)
{
INSERT INTO users VALUES (username);
}
Run Code Online (Sandbox Code Playgroud)

如何使用SQL Server/C#智能地执行此操作?

a_h*_*ame 19

或者使用新的MERGE语法:

merge into users u
using ( 
   select 'username' as uname
) t on t.uname = u.username
when not matched then 
  insert (username) values (t.uname);
Run Code Online (Sandbox Code Playgroud)

  • @MikaelEriksson:可序列化的提示和并发性不会在一起,因为可序列化的效果不是并发的.毕竟,serial是并发的反义词.我认为高并发性的可接受方法是在发生冲突的极少数情况下捕获主键冲突. (2认同)

use*_*076 10

基本上你可以这样做:

IF NOT EXISTS (SELECT * FROM USER WHERE username = @username)
    INSERT INTO users (username) VALUES (@username)
Run Code Online (Sandbox Code Playgroud)

但严重的是,您是如何知道用户是否第一次访问您的网站?当有人在您的网站上注册而不是登录时,您必须在表用户中插入记录.

  • 总而言之 - 到目前为止你已经赢得了超过1K的代表 - 现在不是时候选择一个像样的名字吗? (4认同)