【发布时间】:2013-06-05 21:17:30
【问题描述】:
我正在尝试创建程序,该程序正在生成错误说明
表tblRegisterUser中标识列的显式值只能在使用列列表和IDENTITY_INSERT is ON时指定。
我试图用INDENTITY_INSERT to ON 包围插入语句,但这也不起作用。我遗漏了什么还是我包含的子查询有错误?
下面是存储过程
CREATE PROCEDURE dbo.spInsertUserRegister
(
@FirstName nvarchar(50),
@LastName nvarchar(50),
@Username nvarchar(50),
@Password nvarchar(50),
@Designation nvarchar(50),
@Department nvarchar(50),
@IsAdmin bit
)
AS
BEGIN
INSERT INTO tblRegisterUser Values
(
@FirstName, @LastName, @Username, @Password,@Designation,@Department,@IsAdmin
)
DECLARE @UID INT
SET @UID = @@IDENTITY
INSERT INTO tblLogin(Username,Password,UID,IsAdmin)
Values(@Username, @Password, @UID,(SELECT IsAdmin FROM tblRegisterUser WHERE Username=@Username AND Password=@Password))
END
【问题讨论】:
-
"that too doesn't work" 不是有效的 SQL Server 错误消息。
-
tblRegisterUser对应的create table是什么? -
除非有一个触发器改变了您第一次插入的行为,或者您允许多人拥有相同的用户名(顺便说一句,密码),否则
(SELECT IsAdmin FROM tblRegisterUser ...的意义何在?第二个INSERT?为什么不再只是@IsAdmin?
标签: sql-server sql-server-2008 stored-procedures