【问题标题】:What's the best way to use not exists and insert?使用不存在和插入的最佳方法是什么?
【发布时间】:2015-11-06 05:15:36
【问题描述】:

我正在创建一个存储过程来检查用户名是否存在,如果不存在则插入用户表,然后获取相同用户名的用户 ID。这就是我正在尝试的

alter Procedure Check_Name
 (
 --@idn integer,
@username varchar(25),
@password varchar(100)
--@role_id integer
)
As
Begin
INSERT INTO [user] (username,[password]) 
 SELECT username,[password]
 FROM [user] AS u
WHERE NOT EXISTS( 
SELECT idn FROM [user] AS t
WHERE u.username = t.username); 
End

当我尝试执行时,它说零行受到影响..问题是什么

 execute Check_Name 'Pope', 'Life2Stressfull';

【问题讨论】:

  • 好的,我改变了它..然后我无法为我的 role_id 插入 null,所以插入了一个值。现在我违反了 UNIQUE KEY 约束“UQ__user__F3DBC5722FAC4C26”。无法在对象“dbo.user”中插入重复键。重复键值为 (Franz123)。我不明白,因为我插入的用户名不是“Franz123”
  • WHERE u.username = t.username AND t.username = @username

标签: sql-server stored-procedures exists


【解决方案1】:

你可以这样做: IF NOT EXISTS(SELECT 1 FROM [user] AS t WHERE t.username = @username) BEGIN INSERT INTO [user] (username,[password]) VALUES (@username, @password) END

【讨论】:

    猜你喜欢
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 2010-09-22
    相关资源
    最近更新 更多