Sql server 如何在存储过程中不存在的位置执行插入?

Sql server 如何在存储过程中不存在的位置执行插入?,sql-server,stored-procedures,transactions,not-exists,Sql Server,Stored Procedures,Transactions,Not Exists,我正在创建一个存储过程来检查用户名是否存在,如果不存在,则插入到用户表中,然后获取同一用户名的userid。这就是我想要的 alter Procedure Check_Name (--@idn integer, @username varchar(25), @password varchar(100) --@role_id integer) As Begin INSERT INTO [user] (username, [password])

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

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 * FROM [user] AS t
                       WHERE u.username = t.username); 
End
当我尝试执行时,它表示零行受影响。。有什么问题

execute Check_Name 'Pope', 'Life2Stressfull';

也许你打算这样做:

Insert into user(username, password, role_id, date)
    Select @username, NULL, NULL, getdate()
    from user
    Where Not Exists(Select * from user where username = @username);  

但是,我建议在
用户(用户名)
上放置一个唯一的索引,然后使用
try
/
catch
块捕获任何错误。我认为不需要单独的交易。

你的询问毫无意义。您需要插入四列,但在
选择中只列出一列。您如何处理错误??开始尝试…结束尝试开始捕获错误消息()作为错误消息;末端捕捉;从文档开始:。