Sql server 如何在存储过程中不存在的位置执行插入?
我正在创建一个存储过程来检查用户名是否存在,如果不存在,则插入到用户表中,然后获取同一用户名的userid。这就是我想要的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])
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
块捕获任何错误。我认为不需要单独的交易。你的询问毫无意义。您需要插入四列,但在选择中只列出一列。您如何处理错误??开始尝试…结束尝试开始捕获错误消息()作为错误消息;末端捕捉;从文档开始:。