2015-11-06 42 views
0

我正在創建一個存儲過程來檢查用戶名是否存在,如果不存在,請插入用戶表,然後獲取相同用戶名的用戶標識。這就是我試圖什麼是最好的使用方式不存在並插入?

alter Procedure Check_Name 
(
[email protected] integer, 
@username varchar(25), 
@password varchar(100) 
[email protected]_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 

當我嘗試執行它說,零行affected..What是問題

execute Check_Name 'Pope', 'Life2Stressfull'; 
+0

確定我改變了..那麼我得到了不能插入null爲我的role_id插入一個值。現在,我收到了違反UNIQUE KEY約束'UQ__user__F3DBC5722FAC4C26'的問題。無法在對象'dbo.user'中插入重複鍵。重複的鍵值是(Franz123)。我沒有得到,因爲我插入的用戶名不是'Franz123' – user2127184

+0

'WHERE u.username = t.username AND t.username = @ username' – thepirat000

回答

1

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

相關問題